2013-04-24 74 views
2

寻找一个简单的shell脚本(使用sed或awk)在行中存在一个字符串时注释文本文件的行。作为一个例子,有以下的文本文件:注释掉匹配字符串的行

line1 word1 word2 
line2 word3 word4 
line3 word5 word6 
line4 word1 word7 
line5 word10 word11 

要改为:

#line1 word1 word2 
line2 word3 word4 
line3 word5 word6 
#line4 word1 word7 
line5 word10 word11 

正如你看到的,只能用“字1”被注释掉的串线。

回答

5

我相信这会为你做。

sed -i .backup "/[[:<:]]word1[[:>:]]/s/^/#/g" file 
0

试试这个:

$ sed -e '/[[:<:]]word1[[:>:]]/ s/^/# /' < file 
# line1 word1 word2 
line2 word3 word4 
line3 word5 word6 
# line4 word1 word7 
line5 word10 word11 

这是如何工作的?该sed man page说,

一个sed命令的形式如下:

 [address[,address]]function[arguments] 

手册页以后,它阐明了一个地址可以是一个正则表达式,从而导致功能应用于与正则表达式匹配的每一行。那么上面给出的命令的作用是,如果该行包含独立字word1,则应用替代函数以"# "替换行首锚。