Un ejemplo con dos reglas AWK

La utilidad awk lee los ficheros de entrada línea a línea. Para cada línea, awk comprueba todos los patrones de todas las reglas. Si concuerdan varios patrones entonces se ejecutan las distintas acciones de cada patrón, en el orden en que aparecen en el programa awk. Si no concuerda ningún patrón, entonces no se ejecuta ninguna acción.
Después de ejecutar las acciones de las reglas que concuerden con la línea (quizás  no  concuerde ninguna), awk lee la siguiente línea (aunque existen excepciones). Esto continúa hasta que se alcanza el final de fichero.

Por ejemplo, el programa awk:
/12/  { print $0 }
/21/  { print $0 }

contiene dos reglas. La primera regla tiene la cadena ‘12’ como patrón y realiza la acción ‘print $0’.

La segunda regla tiene la cadena ‘21’ como patrón y también realiza la acción ‘print $0’. La accion/es de cada regla se encierra entre un par de llaves.

Este programa imprime cada línea que contiene o la cadena ‘12’ o la cadena ‘21’. Si una línea contiene ambas cadenas, ésta línea es impresa dos veces, una vez por cada regla.

Si ejecutamos este programa sobre nuestros dos ficheros de datos de ejemplo, `Lista-BBS' y `inventario- enviado', como se muestra aquí:

awk '/12/ { print $0 }
/21/ { print $0 }' Lista-BBS inventario-enviado

obtenemos la siguiente salida:

aardvark 555-5553 1200/300 B
alpo-net 555-3412 2400/1200/300 A
barfly 555-7685 1200/300  A
bites 555-1675 2400/1200/300 A
core 555-2912 1200/300  C
fooey 555-1234 2400/1200/300 B
foot 555-6699 1200/300  B
macfoo 555-6480 1200/300  A
sdace 555-3430 2400/1200/300 A
sabafoo 555-2127 1200/300  C
sabafoo 555-2127 1200/300  C
Jan 21 36 64 620
Apr 21 70 74 514

Dese cuenta de que la línea contenida en `Lista-BBS' que empieza por `sabafoo' fue impresa dos veces, una vez para cada regla.

Publicar un comentario

0 Comentarios