我需要在一个特定的define service部分中更改一个单词,其中service_description是NRPE - NTP_TIME,contact_groups是opsgenie-sla1,我需要更改为opsgenie-sla2,我想使用sed命令来缩短我的工作,因为我需要在多个主机上这样做。下面是文件的一个片段;例如
define service{
use generic-service
service_description NRPE
is_volatile 0
check_period 24x7
max_check_attempts 3
check_interval 5
retry_interval 2
contact_groups opsgenie-sla1
notification_period 24x7
check_command check_nrpe_port_ssl
}
define service{
use generic-service
host_name dns1
service_description NRPE - NTP_TIME
servicegroups ntp_checks
is_volatile 0
check_period 24x7
max_check_attempts 3
check_interval 5
retry_interval 2
contact_groups opsgenie-sla1
check_command check_custom_nrpe!check_ntp_time
}发布于 2023-01-31 15:57:36
这里有一个使用GNU sed的解决方案,但是您将丢失文件的正确缩进,最好使用Stéphane提供的解决方案:
sed ':a;N;$!ba;s/\n/ /g' <filename> | sed 's/\(define service{.*service_description\s*NRPE - NTP_TIME.*contact_groups\s.*\)opsgenie-sla1/\1opsgenie-sla2/g'https://unix.stackexchange.com/questions/733814
复制相似问题