使用Awk将主机名添加到行

时间:2014-07-04 17:43:48

标签: bash awk host

我有这个文本文件TopIP.txt: (小说IP和主机名)

Top destination for Source IP 1.2.3.4
    34322 2.3.4.5
    455   2.3.4.6

我想在行尾添加主机名到每个IP。我的愿望是:

Top destination for Source IP 1.2.3.4 hostname3.com
    34322 2.3.4.5 hostname1.com
    455   2.3.4.6 hostname2.com

我上周发生了这件事但没有保存,现在我无法复制它。

我的代码开始类似于此:

cat TopIP.txt | awk '{print $0, system("host " $NF)}'

2 个答案:

答案 0 :(得分:3)

我坚持使用bash:

while IFS= read -r line; do
    set -- $line
    echo "$line $(host ${!#})"
done < TopIP.txt > newfile

答案 1 :(得分:1)

您也可以轻松地使用sed:

sed -i "0,/IP/s/$/ `hostname -f`/" filename

这只是将当前的完全限定主机名(hostname.domain.tld)添加到包含IP的行的末尾。在使用之前,您需要检查网络配置,以确保hostname -fhost ${!#}返回正确的主机名。网络配置问题导致无效的主机名返回的情况并不少见。