SED / tr等..:如何注释掉文件中包含“string”的行?

时间:2014-07-22 09:37:00

标签: regex bash sed tr

我的文件包含以下行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2002 -j ACCEPT

我想评论(添加#infront)

这一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT

我如何通过SED或其他方法通过命令行执行此操作?

我应该寻找......例如..

2001

然后注释掉整行(添加#infront of)

或者我应该搜索整行,然后将其替换为包含#?

的新行

最实用的方法是什么? (最快)

2 个答案:

答案 0 :(得分:11)

通过sed,

sed '/ 2001 /s/^/#/' file

添加内联编辑-i选项以保存所做的更改。

sed -i '/ 2001 /s/^/#/' file

示例:

$ sed '/ 2001 /s/^/#/' file
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2002 -j ACCEPT

答案 1 :(得分:2)

awk也可以。

awk '/2001/ {$0="#"$0}1' file
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2002 -j ACCEPT