[英]How do you extract IP addresses from a line matching a string from a file in bash?
例:
我有一个文件名example.txt,并在其中包含以下文本:
some text here INFO 200 cv 58687 http://saomesitehoere.com live connect ASDFG 61.215.80.6 07:16
some text here INFO 100 fv 582702687 http://saomesitehoere.org live connect 31.15.80.1 07:16:33
some text here INFO 00 ov 587 http://saomesitehoere.uk live connect ASGGGGFG 91.211.80.6 09:16
some text here INFO 800 kcv 277 http://saomesitehoere.za live connect AFG 71.215.81.5 09:14
我想从包含字符串名称“ ASDFG”的行中提取IP地址,这意味着61.215.80.6
有人可以帮忙吗?
$ grep -oP 'ASDFG \K\S*' < file
61.215.80.6
你可以尝试awk:
awk '/\<ASDFG\>/{print $(NF-1)}' file
您可以使用 :
grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
IP地址是1到3位数字的3倍,后跟一个点,然后是1到3位数字。 因此,这将为您提供这样一行的IP地址:
$ grep ASDFG logfile | grep -o '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\+'
61.215.80.6
要从文件中提取所有“有效” IP地址:
gawk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/,a);split(a[0],b,".")} b[1]<=255&& b[2]<=255 && b[3]<=255 && b[4]<=255 &&length(a[0]){print a[0]}' input_file
这将分两个步骤进行:
注意:需要gawk
才能使用match()
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.