संलग्न एक लाइन में पार्टी की योजना बनाई पर केवल कुछ लाइनों

0

सवाल

मैं पर काम कर रहा हूँ एक स्क्रिप्ट बनाने के लिए परिवर्तन करने के लिए एक Nagios प्लगइन सेवा परिभाषा का उपयोग कर मार. मैं की जरूरत है संलग्न करने के लिए संपर्क समूह का नाम है, लेकिन केवल कुछ के लिए सेवा की परिभाषा है. तो मैं के साथ शुरू होगा ।

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
        }

और मैं चाहते हैं संलग्न करने के लिए केवल संपर्क का चयन करें समूह लाइनों. तो कहते हैं कि मैं चाहता था एक अतिरिक्त जोड़ने के लिए संपर्क समूह के लिए लिनक्स सेवाओं के इस तरह से ।

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 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 appending के अतिरिक्त समूह के भीतर मैच.

$ 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

कि पूरी तरह से काम किया. केवल एक चीज मैं था करने के लिए बदल गया था add-मैं के बाद sed तो यह कायम है । आपकी प्रतिक्रिया के लिए धन्यवाद.
Jim Miller

@JimMiller आप का स्वागत कर रहे हैं. मैं नहीं था के बारे में पता में जगह की आवश्यकता है, क्षमा याचना.
HatLess

कोई चिंता नहीं है । तुम मुझे मिल गया पर सबसे कठिन हिस्सा है । एक महान दिन है.
Jim Miller

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

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

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में