Как заменить следующую запись после сопоставления шаблонов с помощью awk

Как заменить (или изменить) следующую запись после сопоставления с образцом? Пример:

1 2 3 blah 4 replace this record 5 blah 6 replace this record 7 8 9 

Здесь я хочу пропустить или заменить четвертую запись и 6-ю запись, когда предыдущая запись – «бла»,

    One Solution collect form web for “Как заменить следующую запись после сопоставления шаблонов с помощью awk”

    Это заменяет строку после blah :

     $ awk 'f{$0="replacement"; f=0} /blah/{f=1} 1' file 1 2 3 blah replacement 5 blah replacement 7 8 9 

    Как это работает

    • f{$0="replacement"; f=0}

      Если f истинно (отличное от нуля), замените строку и сбросьте f до нуля.

    • /blah/{f=1}

      Если эта строка соответствует выражению regex blah , установите f в значение true.

    • 1

      Это критическая стенограмма awk для печати в целом.

    Interesting Posts

    Создание deb: Как поместить архивные файлы в отдельный пакет .deb?

    Grub не распознает Win10 после первой установки Win10, а затем LinuxMint

    Какие источники энтропии используются ядром Linux?

    Ошибка при попытке установить пакет с помощью dpkg

    как избежать NSCD для DNS

    Как я могу предотвратить использование аргументов аргументов `xargs` в префиксах пробелами?

    Альтернативная альтернатива Linux для регистрации SCSI

    Использование переименования для переименования файлов и каталогов

    Файлы TAR: перемещение файлов из подкаталогов в основной каталог

    Как сделать фиктивное приложение считывает файлы gzip («на лету») без изменений кода

    отображение неправильных строк в консоли ssh

    Не удается добраться до рабочего стола

    smbpasswd не удалось установить новую Samba на новом Ubuntu 11.04

    Подключить Linux к двум сетям одновременно

    Зацикливание файлов с пробелами в именах?

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