Ejemplos con awk

Gracias al lenguaje de procesamiento awk podemos invocar ordenes tanto desde la propia línea de comandos, como desde un archivo que previamente creamos y en el cual hemos programado esas ordenes. Este segundo método es más potente ya que podemos invocar varias ordenes, e incluso trabajar con varios archivos a la vez.

Si no especificamos ningún archivo awk leerá desde la entrada estándar, procesará los archivos especificados línea por línea y los comparará con un patrón, y si coinciden sobre esos archivos se aplicará las acciones indicadas.

awk '/^d/' /etc/passwd

En el ejemplo de arriba awk visualiza las líneas que empiezan por ‘d’.

date | awk '{print $1}'

En este otro ejemplo awk muestra el primer campo de la salida de la orden date.

Vamos a listar de un archivo llamado personas solamente aquellas que tengan 27 años.  Ejemplo del archivo personas:

Creamos un archivo llamado edad con las ordenes que vamos a procesar con awk.

El patrón BEGIN permite especificar una serie de procedimientos que se ejecutarán antes de procesar ninguna línea del archivo destino. También se puede especificar un patrón END al final del archivo, en este se especificarán las ordenes que queremos que se ejecuten después de procesar todas las líneas del archivo destino. $4 se refiere al campo numero cuatro ( en este caso la edad), $0 se refiere a la línea que está procesando. El carácter por defecto que entiende awk como separador de campos son los espacios en blanco y los tabuladores, si hubiera otro signo como separador podriamos especificarlo en el bloque BEGIN con FS=»:» (en este caso signo dos puntos).

Resultado de aplicar awk.

En el segundo ejemplo vamos a listar todas las personas cuyo segundo apellido comience por S.  Desde la propia línea de comando sería como:

Si quisiéramos crear un archivo con las ordenes sería:

Le estamos dando la condición de que si el segundo campo comienza por S lo imprima en pantalla.

En el tercer ejemplo vamos a listar la edad de las personas cuyo nombre sea Marta.