【问题标题】:convert a nagios config file to csv将 nagios 配置文件转换为 csv
【发布时间】:2013-08-16 13:33:11
【问题描述】:

我有一个 Nagios 目录,其中包含一些服务器配置文件:

define host {
   host_name            server1.srv
   hostgroups           linux-servers+holmes
   check_interval           5
}

define host {
   host_name            server2.srv
   hostgroups           linux-servers+holmes
   check_interval           5
}   

我想将该数据重新格式化为 CSV,以便获得:

host_name,hostgroups,check_interval
server1.srv,linux-servers+holmes,5
server2.srv,linux-servers+holmes,5

我很高兴使用 bash 或 powershell 来执行此操作,但我没有足够的脚本专家知道如何执行此操作...如果有人有建议将不胜感激:)!

【问题讨论】:

    标签: bash powershell nagios


    【解决方案1】:

    这个 awk 应该可以工作:

    awk 'BEGIN{print "host_name,hostgroups,check_interval"} /host_name/{v1=$2} /hostgroups/{v2=$2} /check_interval/{v3=$2} /}/{print v1","v2","v3; v1=v2=v3=""}' file
    

    【讨论】:

    • 斯万特你是个传奇!像魅力一样工作:D非常感谢队友:)
    • 只需添加一点评论即可。如果 define host{} 中缺少行 hostgroups 或 check_interval,则该命令将使用 $2 的最后一个值,这是不正确的。你能告诉我如何排序吗?非常感谢!
    • 是的,如果您想要一个空字符串来替换以前的值,只需在打印后将所有 v 变量设置为“”... print v1","v2","v3; v1=v2=v3=""}... 还编辑了答案。
    • 如果你想去掉结尾的逗号,因为缺少 check_interval :... /check_interval/{v3=","$2} /}/{print v1","v2""v3; v1=v2=v3=""} ...
    • 太棒了!在下一个循环之前重新分配空值..非常聪明! :D 谢谢!
    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2021-06-06
    • 2021-09-11
    • 2012-02-16
    • 2018-01-29
    相关资源
    最近更新 更多