列出主机的原始IP地址

列出主机的原始IP地址

我的文件中有以下内容。我想打印姓名下的 IP 地址。

Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver1
Address: 17.146.118.156
Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver2
Address: 17.146.118.168
Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver3
Address: 17.146.118.166

输出应如下所示:

17.146.118.156
17.146.118.168
17.146.118.166

答案1

 grep ^Address my_file | grep -v "#" | awk '{print $2}'

答案2

您可以awk像这样使用:

 awk 'BEGIN {firstName=0;} /Name/ {firstName=1;} /Address/ {if(firstName) {print $NF}; firstName=0;}' <file>

答案3

perl -0777 -e 'print join "\n", <> =~ m/Name.*?Address:\s*([\d.]+)/gms;'

在“地址:”之后使用多行正则表达式来匹配“数字和点”,该“地址:”直接位于名称之前(因为.*?是非贪婪的)

从中读取<>魔术文件句柄 - 读取 STDIN 或指定的文件,例如

perl -0777 -e 'print join "\n", <> =~ m/Name.*?Address:\s*([\d.]+)/gms;' somefile 

或者,将记录分隔符设置为“名称”:

perl -lne '$/="Name:"; /Address: ([\d\.]+)/ && print $1'

由于缺少g它,因此仅匹配每个“记录”中的第一次。

相关内容