SED delete lines between two pattern matches

后端 未结 5 1663
花落未央
花落未央 2020-12-12 02:12

I am trying to replace lines between two pattern/string matches using SED see below. I need to delete lines below interface GigabitEthernet0/3 up to inter

5条回答
  •  春和景丽
    2020-12-12 03:01

    Income:

    $> cat ./text 
    interface GigabitEthernet0/2
     duplex full
     mls qos trust dscp
     spanning-tree portfast
    !
    interface GigabitEthernet0/3
     mls qos trust dscp
     spanning-tree portfast
    !
    interface GigabitEthernet0/4
     mls qos trust dscp
    !
    

    Outcome:

    $> cat ./text | sed '/interface GigabitEthernet0\/3/,/\!/c interface GigabitEthernet0\/3\n!'
    interface GigabitEthernet0/2
     duplex full
     mls qos trust dscp
     spanning-tree portfast
    !
    interface GigabitEthernet0/3
    !
    interface GigabitEthernet0/4
     mls qos trust dscp
    !
    

    Sed can work with multi-line patterns. We just use c command which is changing matched pattern (from interface GigabitEthernet0/3 to !) with interface GigabitEthernet0/3 and !.

提交回复
热议问题