Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用批处理从文本文件中提取IP地址_String_Batch File_Trim - Fatal编程技术网

String 使用批处理从文本文件中提取IP地址

String 使用批处理从文本文件中提取IP地址,string,batch-file,trim,String,Batch File,Trim,我有一个包含如下数据的文本文件: 8月21日[10.23.5.5]拆卸动态 8月18日[10.150.1.45]8月21日15:28:34 8月24日[10.96.5.10]2012年8月21日18:58:26 HYD 8月24日[10.96.5.10]2012年8月22日18:58:26 HYD 8月21日[192.168.15.231]发送邮件[18831] 我需要删除除“[”和“]”包围的IP地址以外的所有内容。“[”之前的字符串长度是固定的,“]”之后的字符串长度是可变的。 我在这里尝试

我有一个包含如下数据的文本文件:

8月21日[10.23.5.5]拆卸动态

8月18日[10.150.1.45]8月21日15:28:34

8月24日[10.96.5.10]2012年8月21日18:58:26 HYD

8月24日[10.96.5.10]2012年8月22日18:58:26 HYD

8月21日[192.168.15.231]发送邮件[18831]

我需要删除除“[”和“]”包围的IP地址以外的所有内容。“[”之前的字符串长度是固定的,“]”之后的字符串长度是可变的。 我在这里尝试使用一种现有的解决方案,但没有成功。是否可以使用批处理?
谢谢:-)

您将此标记为批处理,因此我假设这是在Windows上,而不是在linux上。尽管如此,我还是强烈建议你去谷歌的网站下载一份。这将使您能够访问
cat
grep
命令,从而使操作更加简单。安装后,可以运行以下命令从日志文件中解析出IP地址

cat your.log | grep-oE'([:digit:]{1,3}\){3}[:digit:]{1,3}>ips.txt


干杯

您将此标记为批处理,因此我假设这是在Windows上,而不是在linux上。尽管如此,我还是强烈建议你去谷歌的网站下载一份。这将使您能够访问
cat
grep
命令,从而使操作更加简单。安装后,可以运行以下命令从日志文件中解析出IP地址

cat your.log | grep-oE'([:digit:]{1,3}\){3}[:digit:]{1,3}>ips.txt


Cheers

如果您的系统上还没有安装版本的
sed

$ sed -r -e 's/^[^[]*\[([^]\]*)].*/\1/' file.txt
10.23.5.5
10.150.1.45
10.96.5.10
10.96.5.10
192.168.15.231

此sed单行“脚本”在删除行中的所有内容(行上第一组[]方括号内的内容除外)后输出每个输入行-它不会检查这些内容以确保其与IP地址匹配。

如果您的系统上还没有安装版本的
sed

$ sed -r -e 's/^[^[]*\[([^]\]*)].*/\1/' file.txt
10.23.5.5
10.150.1.45
10.96.5.10
10.96.5.10
192.168.15.231

此sed单行“脚本”在删除行中的所有内容(行上第一组[]方括号内的内容除外)后输出每个输入行-它不会检查这些内容以确保其与IP地址匹配。

直接从命令行:
for/f“tokens=2 delims=[]%f in(file.txt)执行回显%F
。如你所愿重定向。 不像sed/awk®ex那样灵活,但它不需要外部工具


不过,如果您打算组合更复杂的东西,我会真正寻找更强大的工具——除了前面提到的awk或Perl之外,Win的自然选择是Powershell

直接从命令行:
for/f“tokens=2 delims=[]%f in(file.txt)do echo%f
。如你所愿重定向。 不像sed/awk®ex那样灵活,但它不需要外部工具


不过,如果您打算组合更复杂的东西,我会真正寻找更强大的工具——除了前面提到的awk或Perl之外,Win的自然选择是Powershell

grep
不会提取IP地址,它只会输出匹配的行。您需要
sed
awk
或类似的方法来处理该行。我认为
>
标准重定向操作符也可以在Windows上工作。啊,好的。我没有发现您使用了grep的
-o
——仅匹配
)选项。不过,重定向并不是很重要。谢谢亚当。将安装Cygwin并进行尝试。非常感谢。
grep
不会提取IP地址,它只会输出匹配的行。您需要
sed
awk
或类似的方法来处理该行。我认为
>
标准重定向操作符也可以在Windows上工作。啊,好的。我没有发现您使用了grep的
-o
——仅匹配
)选项。不过,重定向并不是很重要。谢谢亚当。将安装Cygwin并进行尝试。非常感谢,谢谢克雷格。将安装sed并进行尝试。非常感谢:-)谢谢克雷格。将安装sed并进行尝试。非常感谢:-)