如果行中存在字符串,则查找一个简单的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
如您所见,只有字符串“word1”的行被注释掉。
答案 0 :(得分:5)
我相信这会为你做到。
sed -i .backup "/[[:<:]]word1[[:>:]]/s/^/#/g" file
答案 1 :(得分:1)
我认为,您的问题类似于How do I add a comment (#) in front of a line after a key word search match
如果我错了,请纠正我。我希望,这会对你有帮助。
答案 2 :(得分: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
,则应用替换函数用"# "
替换行首锚。