【问题标题】:commenting out lines with matching string用匹配的字符串注释掉行
【发布时间】:2016-01-25 06:21:57
【问题描述】:

如果行中存在字符串,则寻找一个简单的 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”的行被注释掉了。

【问题讨论】:

    标签: shell


    【解决方案1】:

    我相信这会为您解决问题。

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

    【讨论】:

      【解决方案2】:

      我想,你的问题类似于How do I add a comment (#) in front of a line after a key word search match

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

      【讨论】:

        【解决方案3】:

        试试这个:

        $ 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,则应用替换函数将行首锚点替换为"# "

        【讨论】:

          猜你喜欢
          • 2013-08-02
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          • 1970-01-01
          • 2013-05-23
          • 2020-01-10
          • 2017-03-20
          • 1970-01-01
          相关资源
          最近更新 更多