从配置文件中删除块?

从配置文件中删除块?

有谁知道删除配置块的简单实用方法。我有一个格式如下的文件:

lease {
  interface "eth0";
  ...
}
lease {
  interface "wlan3";
  fixed-address 192.168.0.108;
  option subnet-mask 255.255.255.0;
  ...
}

我想删除 的配置块interface "wlan3";

我开始尝试编写自定义 grep 函数,但它很快就变得复杂。

这似乎是一个常见问题。有没有人有一个方便的解决方案来处理这种格式的配置文件?

答案1

awk

awk -v RS='}' 'NF && ! /interface "wlan3";/{print $0"}"}'  infile

输出将是:

lease {
  interface "eth0";
  ...
}

相关内容