我尝试从Nagios配置文件中删除多行。但我多次失败。现在我求你帮忙。
Nagios配置文件:
define host{
use linux-host
host_name vm1
alias vm1
address 1.2.3.4 }
define host{
use linux-host
host_name vm2
alias vm2
address 1.2.3.4
}
define host{
use linux-host
host_name vm3
alias vm3
address 1.2.3.4
}
我需要一个通用命令,允许我删除整个文本块(定义主机{。*})。例如。 for" vm2"。不应删除vm1和vm3的文本块。
你有想法吗?
提前谢谢你。 Tzzaetaynzz
答案 0 :(得分:1)
如果块被空行分隔并且块内没有空行:
awk -v RS="" -v ORS="\n\n" '!/vm2/' file
注意我使用vm2
作为模式,您可以根据需要对其进行优化。例如:host_name +vm1
或其他。
答案 1 :(得分:1)
-0777
读取整个文件(undef记录分隔符)
-i
就地修改,
.BAK
备份扩展名为.BAK的文件
perl -0777 -i.BAK -pe 's/define host\{[^{]*vm2.*?\}//gs' config_file