我试图从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
}
我需要一个常规命令,该命令允许我删除整个文本块(定义主机{。*})。例如。对于" VM2"。VM1和VM3的文本块不应删除。
您有一个想法吗?
预先感谢您。tzzaetaynzz
如果块被空线隔开,并且块中没有空线:
awk -v RS="" -v ORS="nn" '!/vm2/' file
NOTE 我使用vm2
作为模式,您可以根据需要进行完善它。例如:host_name +vm1
或其他。
-0777
读取整个文件(Undef Record分隔符) -i
Inploph修改, .BAK
用扩展名.bak
perl -0777 -i.BAK -pe 's/define host{[^{]*vm2.*?}//gs' config_file