删除文件中的多行(Nagios配置)



我试图从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

相关内容

  • 没有找到相关文章

最新更新