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

я хочу закомментировать (добавить # перед) строку, которая

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

как я могу сделать это с помощью SED или другого метода через командную строку?

я должен искать .. например..

2001

а затем закомментируйте всю эту строку (добавьте # перед)

или я должен искать всю строку, а затем заменить ее новой, содержащей #?

какой метод будет наиболее практичным? (самый быстрый)


person Community    schedule 22.07.2014    source источник


Ответы (2)


Через сед,

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
person Avinash Raj    schedule 22.07.2014

Этот 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
person Jotne    schedule 22.07.2014