Intereting Posts
mkdir under / cgroup создает файлы вместе с каталогами Как systemd выжить в kill -9? Как открыть программу в качестве другого пользователя внутри зарегистрированного экрана? Конфигурация cn = config OpenLDAP не полностью копируется Emacs показывает восьмеричные escape-последовательности для некоторых символов в файле UTF-8 Странные символы вместо значков в Firefox Чтение файла Microsoft Excel в отношении поведения общей памяти Как рекурсивно изменять разрешения для всех каталогов внутри текущего каталога? Прерывая rsync с помощью ctrl-c, следует ли использовать `–partial` или` –append`? Печать между двумя шаблонами только в том случае, если первый шаблон появляется во второй раз Запуск приложения в исходной рабочей области вместо текущей рабочей области Печать диапазона файлов на основе временного диапазона с помощью awk? Установите NFS4-экспорт из Ubuntu на Mac OSX 10.11 как я могу взять только имя файла и размер из результата команды du -sh

Regex to Cisco Interface

Я хотел бы знать, есть ли некоторое sed , grep или awk regex для разбора раздела интерфейса Cisco и исключить, если интерфейс отключен (завершение работы), как пример ниже.

Пример:

 ! interface FastEthernet0/1 ip address 10.16.0.1 255.255.255.224 ! interface FastEthernet0/2 ip address 10.17.0.1 255.255.255.224 shutdown ! 

Я использую sed regex ниже для разделения раздела интерфейса:

 sed -n -e '/^interface/,/^!/p' file.txt 

Но регулярное выражение выше, проанализируйте весь интерфейс и не исключите интерфейс.

AWK

С GNU awk или mawk вы можете сделать это следующим образом:

 awk -v RS='!\n' '!/shutdown/' 

Вывод:

 interface FastEthernet0/1 ip address 10.16.0.1 255.255.255.224 

Вы можете сделать матч более точным, если вы только посмотрите на выключение в третьей строке:

 awk -v RS='!\n' -v FS='\n +' '$3 !~ /shutdown/' 

СЕПГ

Конечно, вы можете использовать sed, но это сложнее.

Один из подходов – это тот, с которого вы начали, но собирайте всю запись в удержании, прежде чем печатать что-либо. Это работает с GNU sed:

 sed -n '/^interface/,/^!/ H; 1b; /^!/ { z; x; s/^\n//g; /shutdown/!p }'