追加一线在庆典只有在某些线路

0

的问题

我工作的一个脚本,更改它的监控频插服务的定义使用BASH. 我需要追加该接触小组的名字,但只有对于某些服务的定义。 所以我会开始与此有关。

define service {
    use                     sites-service
    host_name               my_host
    service_description     check_reboot_os_updates
    check_command           check_reboot_os_updates
    contact_groups          contactgroup1
    servicegroups           MyGroup
    }
    
define service {
        use                     linux-service
        host_name               my_host
        service_description     other_description
        check_command           other_command
        contact_groups          contactgroup1
        servicegroups           MyGroup
        }

我想要追加的唯一选择接触的基线。 所以说我想添加一个额外的联络小组的Linux服务这样的。

define service {
        use                     sites-service
        host_name               my_host
        service_description     check_reboot_os_updates
        check_command           check_reboot_os_updates
        contact_groups          contactgroup1
        servicegroups           MyGroup
        }
        
define service {
        use                     linux-service
        host_name               my_host
        service_description     other_description
        check_command           other_command
        contact_groups          contactgroup1, contactgroup2
        servicegroups           MyGroup
        }

有没有办法我可以这样做使用sed或awk或其他什么东西?

awk bash nagios sed
2021-11-23 20:51:30
2

最好的答案

2

awk '
  $1 == "use" {use = $2}
  use == "linux-service" && $1 == "contact_groups" {$0 = $0 ", contactgroup2"}
  {print}
' file

更新的文件:

  • gawk -i inplace '...' file
  • awk '...' file | sponge file --需要 moreutils
  • f=$(mktemp); awk '...' file > "$f" && mv "$f" file
2021-11-23 21:28:53
0

使用 sed如果字符串 linux-service 是独一无二的,你可以试着匹配从含有串的行包含字符串 contact_groups 追加额外的集团内相匹配。

$ sed '/linux-service/,/contact_groups/s/contact_groups.*/&, contactgroup2/' input_file
define service {
        use                     sites-service
        host_name               my_host
        service_description     check_reboot_os_updates
        check_command           check_reboot_os_updates
        contact_groups          contactgroup1
        servicegroups           MyGroup
        }

define service {
        use                     linux-service
        host_name               my_host
        service_description     other_description
        check_command           other_command
        contact_groups          contactgroup1, contactgroup2
        servicegroups           MyGroup
2021-11-23 21:19:20

那个完美工作。 我唯一不得不改变是加我后sed因此它依然存在。 谢谢你的回应。
Jim Miller

@JimMiller你是受欢迎的。 我不清楚在地方一要求,表示了歉意。
HatLess

没有后顾之忧。 你让我在最困难的部分。 有一个伟大的日子。
Jim Miller

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................