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

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

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

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

  • Может ли строка использоваться как индекс в массиве массивов в gawk?
  • 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

    Каковы последствия установки имени хоста?

    Right Distro для текстовых потребностей

    бесконечное активирующее состояние для пользовательской сборки openssh-hpn-sshd на ubuntu 16

    Удаление непечатаемых символов из журналов ожидания?

    Термин gnome – это тип оболочки без входа?

    Как вы скрываете пароль при вызове во время команды su?

    переименовать каталог изображений числовой

    Как внести изменения в инструмент настройки nvidia-settings

    Почему эти бомбы вилки-ракеты работают по-разному, и каково значение & в ней?

    Как вы управляете своими псевдонимами bash / zsh?

    Почему один linux-дистрибутив работает быстрее, чем другой на ноутбуке?

    Shell с вкладки Firefox

    Запуск etherpad в качестве сервиса на малине pi

    Как добиться быстрого переключения пользователей с помощью нескольких графических адаптеров, предотвратить использование виртуального терминала?

    странные результаты расследования перезагрузки в auth.log

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