2013-04-24 4 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

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 
Смежные вопросы