sed 查找并插入或替换

sed 查找并插入或替换

我想使用 bash 脚本将一个单词添加到文件中。具体来说,我希望在其中添加一行/etc/nsswitch.conf

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

hosts:          files wins dns mdns4_minimal [NOTFOUND=return] dns myhostname

我一直在尝试sed,但没有成功。我不知道如何在该文件中搜索单词并替换它或插入单词。

答案1

捕获您不想更改的部分。

sed 's/^\(hosts:  *files\) \(mdns4_minimal\)/\1 wins dns \2/' input.file
  • \(...\)创建一个捕获组,同时\1引用第一个捕获组、\2第二个捕获组等等。
  • ^匹配行的开头。
  • *意思是“重复前面的内容零次或多次”。我懒得去数空格了。
  • -i如果要在文件位置进行更改,请添加选项,以创建原始文件的备份副本-i.bak,或添加-i.default

相关内容