【问题标题】:SED/tr etc.. : How to comment out a line that contains "string" in a file?SED/tr 等:如何注释掉文件中包含“字符串”的行?
【发布时间】:2014-09-13 01:32:00
【问题描述】:

我的文件包含如下几行:

-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

我想注释掉(添加#infront of)那一行

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

我怎样才能通过 SED 或通过命令行的其他方法做到这一点?

我应该寻找..例如..

2001

然后注释掉整行(在前面加上#)

或者我应该搜索整行,然后用包含 # 的新行替换它?

什么是最实用的方法? (最快)

【问题讨论】:

    标签: regex bash sed tr


    【解决方案1】:

    这个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
    

    【讨论】:

      【解决方案2】:

      通过 sed,

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-13
        • 2013-08-02
        • 2014-06-08
        • 2014-12-11
        • 2018-07-18
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多