⑴ macosx系统 如何编写一个shell脚本替换文件中多行中的特定字符串
sed -i '' '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile
mac 上要求你必须对修改的文件进行备份,因此需要你这样写代码
sed -i 'yourfile.back' '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile
如果你不需要备份文件则直接将"yourfile.back"留空即可
⑵ shell脚本定位某个文件中特定位置的字符串并进行替换应该怎么写
根据位置替换即可:
readip
sed-ri"/subnet/s/(subnet)[^]+(netmask.*)/1$ip2/"/mnt/file
/subnet/ -先正则匹配到含有subnet的行,然后替换。
替换的时候将不变的部分用小括号括起来,后面依次用1 , 2 原封不动地引用回来。
-r 选项用于支持扩展正则,这样就不需要额外的转义符。
[^] 表示不为空格的任意一个字符,+ 表示重复该字符至少1次。