2011-04-27 60 views
1

我有一個輸出像這樣的命令主機的IP地址:這種通過替換使用SED或其他命令行工具

192.168.1.1  182 
192.168.1.10  300 
192.168.4.50  64 

我要管的sed或其他一些Linux命令行工具和替換IP地址與主機命令的主機名如下:

web.hostname.com  182 
db.hostname.com  300 
search.hostname.com 64 

我該如何去做這件事?

+0

命令是什麼?許多現有的網絡工具都有一個名稱與ips的切換。 – drysdam 2011-04-27 18:25:10

+0

@drysdam:rabbitmqctl – silvamerica 2011-04-27 18:34:31

回答

1

看起來有點棘手,但應該做你需要的東西:

your_command | while read HOST NUM; do host $HOST | tr "\n" " "; echo $NUM; done 
0

我無法弄清楚如何讓sed中使用命令的評價(以反引號)在替換字符串並傳遞它是其中一個匹配的子表達式作爲參數,但也許有人可以。

如果你是在bash,你可以管成這樣:

while read ip whatever ; do hostname=`host $ip | grep pointer` ; \ 
if [ -n "$hostname" ] ; then echo `host $ip` $whatever | \ 
sed 's/\(^.* pointer \)\(.*\)\./\2/g' ; else echo $ip $whatever ; fi ; done 

(這試圖拉主機名了迴應,並保留IP地址數字,如果查找ISN」的結果t主機名)