awk:如何替换块中的文本,但打印其他所有内容

时间:2012-08-17 00:51:27

标签: awk replace

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

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

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

2 个答案:

答案 0 :(得分:1)

在现有next之后添加print,并在现有的大括号后添加:

{print}

答案 1 :(得分:1)

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

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

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