Удаление совпавшей строки ПОСЛЕ совпадения с другой строкой - PullRequest
0 голосов
/ 29 января 2020

Я хотел бы получить вашу помощь по этому вопросу:

У меня есть файл с тысячами строк, мне нужно найти раздел файла и удалить несколько строк на месте:

Это раздел, и строки, которые я хотел бы удалить, помечены:

interface Vlan824
 description WRES_824
 vrf forwarding V211
 ip address 172.17.224.2 255.255.240.0 #### Delete this ####
 ip helper-address xxxx
 ip helper-address xxxy
 no ip redirects
 no ip proxy-arp
 ip verify unicast source reachable-via rx 2699
 standby delay minimum 0 reload 60
 standby version 2
 standby 0 ip 172.17.224.1 #### Delete this ####
 standby 0 priority 110
 standby 0 preempt delay minimum 300 reload 300
 shutdown
 standby 1 ipv6 FE80::1 #### Delete this ####
 standby 1 ipv6 <IPV6-PREFIX-1>0E:824::1/64 #### Delete this ####
 standby 1 priority 110
 standby 1 preempt delay minimum 300 reload 300
 ipv6 address FE80::2 link-local #### Delete this #### 
 ipv6 address <IPV6-PREFIX-1>0E:824::2/64 #### Delete this ####
 ipv6 nd prefix <IPV6-PREFIX-1>0E:824::/64 no-advertise #### Delete this ####
 ipv6 nd managed-config-flag
 ipv6 nd other-config-flag
 no ipv6 redirects
 ipv6 dhcp relay destination xxx
 ipv6 dhcp relay destination xxx
 ipv6 verify unicast source reachable-via rx URPF
 bfd interval 750 min_rx 750 multiplier 3
 arp timeout 300
!

Этот sed удалит упомянутые строки (кроме третьей), но мне нужно сделать это ТОЛЬКО в этом разделе.

sed -i '/224.1/d; /224.2/d; /224.3/d; /:224::/d; /:824::/d' FILE.txt

Буду признателен за вашу помощь.

Fer

РЕДАКТИРОВАТЬ:

Чтобы уточнить, что мне нужно, если у меня есть этот файл:

aaa
bbb
hhh
eeb
ccc
!
aab     I need to find this section ( from aab to ggc ) 
hhb     and delete just the eeb line
eeb
ffb
ggc
!
aac
hhc
eeb
ffc

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Объедините вашу команду в одну группу и задайте для группы диапазон, на который хотите повлиять.

sed -i '<b>/interface Vlan824/,/!/{</b>/224.1/d;/224.2/d;/224.3/d;/:224::/d;/:824::/d;<b>}</b>' foo.txt
0 голосов
/ 29 января 2020

Предположим, что вы хотите редактировать раздел Vlan824 (заканчивающийся символом!), А шаблон для сопоставления удаляемых строк: 224.1 и FE80

sed -n '/Vlan824/,//p;/^\!/q' your-file | grep -v '224.1\|FE80'
...