URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9028
[ Назад ]

Исходное сообщение
"Как заменить две строки на одну (perl, sed и т.п)"

Отправлено shados , 11-Фев-11 02:35 
Приветствую, великий all!
Есть кусок конфига (в общем случае текстового файла)

interface FastEthernet0/11
description BB1 E0/0
switchport access vlan 100
switchport mode dynamic desirable
!
interface FastEthernet0/12
switchport mode dynamic desirable
!

Нужно убрать строку "switchport mode dynamic desirable" только в том случае, если перед ней есть строка "switchport access vlan". В редакторе VIM это делается просто:
:%s/\( switchport access vlan 100\)\n switchport mode dynamic desirable/\1/

Вопрос - как сделать то же самое как можно проще в одну строку с помощью sed или хотя бы perl?


Содержание

Сообщения в этом обсуждении
"Как заменить две строки на одну (perl, sed и т.п)"
Отправлено temny , 11-Фев-11 12:40 
$ sed '/switchport access vlan/{N;s!\nswitchport mode dynamic desirable!!;}' file
interface FastEthernet0/11
description BB1 E0/0
switchport access vlan 100
!
interface FastEthernet0/12
switchport mode dynamic desirable
!


"Как заменить две строки на одну (perl, sed и т.п)"
Отправлено shados , 11-Фев-11 18:28 
>
$ sed '/switchport access vlan/{N;s!\nswitchport mode dynamic desirable!!;}' file 
> interface FastEthernet0/11
> description BB1 E0/0
> switchport access vlan 100
> !
> interface FastEthernet0/12
> switchport mode dynamic desirable
> !
>

Спасибо!