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
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 !
.