Regex awk для интерфейса Cisco

Я хотел бы знать, есть ли какое-нибудь Sed / Grep или Awk regex для разделения раздела интерфейса Cisco с определенным атрибутом, например, ниже.

Содержимое файла file.txt

! interface FastEthernet0/1 no ip unreachables ! interface FastEthernet0/2 no ip proxy-arp ! 

Автор сценария:

 #!/bin/bash VALUE="no ip proxy-arp" awk -v RS='!\n' -v PATTERN=${VALUE} '/$PATTERN/' file.txt | awk '/^interface/'; exit 0 

Проблема в том, что я запускаю строку непосредственно из оболочки, она работает, но когда я запускаю сценарий, это не работает.

Запуск с bash -x , я вижу, что awk не может заменить значение переменной.

Какие-либо предложения ?

  • От 192.168.0.146 icmp_seq = 1 Destination Host Unreachable
  • Изменение маршрутов для VPN
  • Выполните Cisco Doctor Doctoring на FreeBSD
  • Интерфейс Linux RX Packet Выпало из LACP и не выполняет loadbalacing
  • Asterisk и NAT: регистрация SIP и IAX не удалась при удаленном соединении за NAT
  • Можно ли одновременно запускать два VPN-клиента?
  • Проблема с подключением FTP в UNIX
  • Как остановить openconnect от изменения настроек DNS
  • One Solution collect form web for “Regex awk для интерфейса Cisco”

    Трудно поверить, что это работает в вашей оболочке. Тем не менее этот код содержит несколько ошибок, а также неправильный подход IMHO.

    awk ожидает строку между // не переменной. Это постоянные регулярные выражения. Таким образом, вы либо заставляете оболочку помещать переменную туда, либо используете ~ .

    Ваш подход с исправлениями:

     awk -v RS='!\n' -v PATTERN="${VALUE}" '$0 ~ PATTERN' file.txt | awk '/^interface/' 

    Я удивлен, что это работает. Из документации я ожидал, что из-за установки RS нежелательный «!» будут напечатаны. Однако я считаю это лучше:

     awk -v PATTERN="${VALUE}" \ '$0 ~ PATTERN { print previousline; }; { previousline=$0; }' file.txt 

    или с жестко закодированным рисунком

     awk '/no ip proxy-arp/ { print previousline; }; { previousline=$0; }' file.txt 

    или с оболочкой, пишущей шаблон

     awk /"$VALUE"/' { print previousline; }; { previousline=$0; }' file.txt 
    Interesting Posts

    Ядро Не удается вызвать системный сбой при игре – nvidia drivers

    Как вставить строку в массив по-разному

    Debian не работает.

    Рекурсивно в нижнем регистре, замените место и удалите недопустимые символы в linux FS

    Не удается получить доступ к каталогу с разрешениями drw-rw-r-

    Как предотвратить двойное экранирование?

    Выход трубы Bash на большее количество

    Redhat / Centos 7 Лучшая практика Firewalld для правил pptp или L2TP / IPsec

    perl: как конкретная альтернативная версия?

    «Конфликтующее распространение: InRelease (ожидаемый выпуск, но получил релиз + 1)», что это такое?

    Как поместить символ новой строки в файл с помощью команды echo и оператора перенаправления?

    как выводить текст на экран и файл внутри сценария оболочки?

    Как найти, какой пакет предоставляет файл?

    dconf-WARNING **: не удалось зафиксировать изменения в dconf: соединение закрыто

    mpirun не может распознать программу в $ PATH

    Linux и Unix - лучшая ОС в мире.