Shell 用匹配字符串注释掉行

Shell 用匹配字符串注释掉行,shell,Shell,正在寻找一个简单的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 w

正在寻找一个简单的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”的行被注释掉。

我相信这会对您有所帮助

 sed -i .backup "/[[:<:]]word1[[:>:]]/s/^/#/g" file
sed-i.backup/[[::]]/s/^/#/g”文件
试试这个:

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

在手册页的后面部分,它阐明了地址可以是正则表达式,这将导致函数应用于与正则表达式匹配的每一行。因此,上面给出的命令的作用是,如果行包含独立的单词
word1
,则应用替换函数将行锚的开头替换为
“#”

,我认为,您的问题类似于

如果我错了,请纠正我。我希望,这会对你有所帮助

     [address[,address]]function[arguments]