我尝试使用sed在IP地址后找到包含字符串的行并替换该行。为了说明,我有一个像这样的文本文件......
192.168.10.155 Mike
8.8.8.8 Googley
123.231.123.3 Tom
192.238.8.10 Matt
让我们说我想找到并替换Tom的线路,我希望在一个IP地址和空格之后匹配Tom。 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
但这似乎不起作用。关于如何修复第一部分以在每个八位字节1至3位数的任何IP地址上动态匹配的任何想法?
答案 0 :(得分: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
答案 1 :(得分:1)
sed -ri "/[0-9]{1,3}(\.[0-9]{1,3}){3} Tom$/c$newip Tom" file