【问题标题】:Delete multiple lines in file (Nagios configuration) [duplicate]删除文件中的多行(Nagios 配置)[重复]
【发布时间】:2017-12-14 11:45:39
【问题描述】:

我试图从 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 的文本块不应该被删除。

你有想法吗?

提前谢谢你。 扎塔恩兹

【问题讨论】:

    标签: bash awk sed grep nagios


    【解决方案1】:

    如果块被空行分隔并且块内没有空行:

    awk -v RS="" -v ORS="\n\n" '!/vm2/' file
    

    注意,我使用vm2 作为模式,您可以根据需要对其进行改进。例如:host_name +vm1 或其他。

    【讨论】:

    • 它对我有用。谢谢!
    【解决方案2】:

    -0777 读取整个文件(未定义记录分隔符) -i就地修改, .BAK 备份扩展名为 .BAK 的文件

    perl -0777 -i.BAK -pe 's/define host\{[^{]*vm2.*?\}//gs' config_file
    

    【讨论】:

    • 感谢您的快速回复。
    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多