2013-04-24 65 views
0

我試圖使用sed在IP地址後找到包含字符串的行並替換該行。爲了說明這一點,我有一個文本文件是這樣的...sed找到並替換IP地址後包含字符串的行

192.168.10.155 Mike 
8.8.8.8 Googley 
123.231.123.3 Tom 
192.238.8.10 Matt 

比方說,我想查找和替換湯姆的路線,我想匹配在湯姆的IP地址和一個空格後。 IP地址的每個八位字節可以有1到3個數字。目前,我有...

newIpAddress="111.111.111.111" 
sed -i "/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} Tom/c\$newIpAddress Tom" file 

但是,這似乎並不奏效。任何關於如何修復第一部分以便在任何IP地址上動態匹配每個八位字節1到3位的任何想法?

回答

1
sed -ri "/[0-9]{1,3}(\.[0-9]{1,3}){3} Tom$/c$newip Tom" file 
+0

謝謝!那就是訣竅。 – user2150250 2013-04-24 18:28:44

2

這裏是awk方法:

$ new_ip=1.1.1.1  

$ awk -v ip="$new_ip" '$2=="Tom"{$1=ip}1' file 
192.168.10.155 Mike 
8.8.8.8 Googley 
1.1.1.1 Tom 
192.238.8.10 Matt