Как заменить следующую запись после сопоставления шаблонов с помощью 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

    Escape hash mark (#) в / etc / environment

    Что означает «управляемый» в имени пакета бабушки?

    Объединение двух каталогов без копирования файлов

    Доступ к сети в сетевом пространстве имен

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

    изменить язык в скрипте

    Gentoo virt-manager на системе без GNOME не может подключиться к libvirtd из-за того, что polkit бросает недостающую ошибку файла

    Man directory layout – почему в подкаталогах?

    Доступно только две памяти объемом 2 ГБ на 64-битном ядре Linux

    Как ограничить использование процессора Skype

    Как сохранить переменную, которая увеличивается по индексу?

    Как преобразовать беззнаковое десятичное число (менее 1 << 32) в 4 байта (двоичное) в bash?

    Контейнер LXC для использования «виртуального» интерфейса с хоста (семантика пространства имен)

    Сравните два журнала по строкам и покажите различия, и если порядок слов из строки не совпадает

    Замена процесса тройником и пастой

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