shell脚本定位某个文件中特定位置的字符串并进行替换应该怎么写?

2024-11-29 07:38:52
推荐回答(3个)
回答1:

根据位置替换即可:

read ip
sed -ri "/subnet/s/(subnet )[^ ]+( netmask.*)/\1$ip\2/" /mnt/file

/subnet/ - 先正则匹配到含有subnet的行,然后替换。

替换的时候将不变的部分用小括号括起来,后面依次用脊祥链\1 , \2 原封不动地引宴掘用回来。樱孙

-r 选项用于支持扩展正则,这样就不需要额外的转义符。

[^ ] 表示不为空格的任意一个字符,+ 表示重复该字符至少1次。

回答2:

oldip=`cat /mnt/file | grep "subnet" | awk '{print $2}'`  //取得那个位空枣置的庆亏橘ip
sed -i  "s/$oldip/\$ip/" /mnt/file   //替换为誉团新的IP

回答3:

是192.168.1.0会变橘燃但是他所在的行数不早燃变的意思吗

sed '行数s/xxxx/bbbb/陆伍虚' aaa.file