【问题标题】:Awk: how to replace text within block, but print everything elseawk:如何替换块内的文本,但打印其他所有内容
【发布时间】:2012-08-13 11:14:37
【问题描述】:

我可以在块中用 AllowOverride All 替换字符串 AllowOverride None,但我只能打印匹配的文本块。

如何打印比赛前后的文字?

awk '
/<Directory \/var\/www\/>/, /<\/Directory>/ {
  sub(/AllowOverride None/,"AllowOverride All")
  print
}
' /etc/apache2/sites-available/default

【问题讨论】:

    标签: awk replace


    【解决方案1】:

    在您现有的print 之后添加一个next 并在您现有的右大括号之后添加它:

    {print}
    

    【讨论】:

      【解决方案2】:

      您可以只执行替换而不在第一个子句中打印,然后添加第二个子句以打印每一行。像这样:

      awk '
      /<Directory \/var\/www\/>/, /<\/Directory>/ {
          sub(/AllowOverride None/, "AllowOverride All");
      }
      {
          print;
      }
      ' /etc/apache2/sites-available/default
      

      我对此进行了快速测试,我相信它会起作用。

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 2021-09-14
        • 1970-01-01
        • 2013-03-20
        • 2023-03-09
        • 1970-01-01
        • 2011-11-10
        • 2015-05-19
        相关资源
        最近更新 更多