如何在文件中搜索特定行,然后在该行注释或注释?

时间:2013-11-21 13:06:36

标签: bash

我正在编写一个bash脚本,并且在该脚本中我需要对特定文件执行操作,当我完成操作后,继续使用其余的脚本。

我需要扫描一个文件,当我找到一个特定的配置行时,我需要先在一个配置中注释,然后继续注释掉另一个配置选项。

编辑:哇,我的第一个问题,我遗漏了最重要的细节!我用这个具体的例子编辑了我的问题:

我正在尝试编辑文件dhcpd.conf,我正在寻找这些行注释掉:

option domain-name "example.org";   
option domain-name-servers ns1.example.org, ns2.example.org;

所以他们最终看起来像这样:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

此时bash脚本将继续执行并执行一堆其他指令。

您可以给我的任何帮助将不胜感激。 : - )

2 个答案:

答案 0 :(得分:0)

可能有更好的解决方案,但您可以尝试使用此文件。

$ cat file.txt
option domain-name example.org;
dont touch me 
option domain-name-servers ns1.example.org
dont touch this 

$ sed -i 's/^option domain-name/#option domain-name/' file.txt

$ cat file.txt
#option domain-name example.org;
dont touch me 
#option domain-name-servers ns1.example.org
dont touch this 

$ sed -i 's/^option domain-name/#option domain-name/' file.txt

这是working DEMO through command line using echo

答案 1 :(得分:0)

如果您需要在一个配置文件上执行许多不同的指令,您可以将指令转换为sed命令,然后运行sed -f commands config.file.txt

您必须在此处找到最有用的sed用法示例:http://sed.sourceforge.net/sed1line.txt