Cómo replace el próximo logging después de una coincidencia de patrón usando awk

¿Cómo replace (o modificar) el próximo logging después de un patrón de coincidencia? Ex:

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

Aquí quiero omitir o replace el cuarto logging y el 6to logging cuando el anterior logging es "bla"

Esto reemplaza la línea después de blah :

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

Cómo funciona

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

    Si f es verdadero (distinto de cero), entonces reemplace la línea y reinicie f a cero.

  • /blah/{f=1}

    Si esta línea coincide con la expresión regular blah , entonces establezca f en verdadero.

  • 1

    Esta es la abreviatura críptica de awk para imprimir toda la línea.

    Intereting Posts