1

我有一个输出此信息的临时文件

1.2.3.4 34
1.2.3.5 23
1.2.3.6 22

第一列是 ip 地址,第二列是与数据库的 simultaneos 连接,我需要输出第一列不是 IP 地址而是主机名,并保留第二列的信息

期望的输出

hostname1 34
hostname2 23
hostname3 22

提前致谢...

4

3 回答 3

2

可能是这样的:

#!/bin/bash
while read ip n
do
   # Uncomment following to use /etc/hosts
   # name=$(awk -v ip=$ip '$1 ~ ip{print $2}' /etc/hosts)
   # Uncomment following to use nslookup
   # name=$(nslookup $ip| grep "name ="|sed 's/.*=//')
   # Uncomment following line to use dig (thanks to Charles Duffy)
   # name=$(dig +short -x $ip)
   echo $name $n
done < file
于 2014-02-17T17:27:41.693 回答
0

不完全确定您想要实现什么,但这实际上会获得“所需的输出”

awk 'BEGIN {x = 1} {printf "hostname%s %s\n", x, $2; x += 1}' tempfile
于 2014-02-17T18:05:18.620 回答
0

logresolve从怎么样apache2-utils?它检测看起来像 IP 地址的内容并将其替换为解析的主机名:

$ cat tempfile
1.2.3.4 34
1.2.3.5 23
1.2.3.6 22

$ cat tempfile | logresolve
hostname1 34
hostname2 23
hostname3 22
于 2016-08-04T05:47:25.013 回答