Manual Awk mediante ejemplos, Parte 1
Awk es un lenguaje muy bonito con un nombre muy extraño. En este primer artÃculo de una serie de tres, Daniel Robbins le mostrará rápidamente como obtener sus habilidades de programación awk. Según avanza la serie, temas más avanzados se cubrirán, culminando con una avanzada del mundo real awk, con una aplicación de demostración.
En esta serie de artÃculos, voy a convertirle en un codificador awk competente. Voy a admitirlo, awk no tiene un nombre muy bonito o especialmente «hip» y la versión GNU de awk, llamada gawk, suena francamente rara. Los que no están familiarizados con el idioma puede oÃr «awk» y pensar en un lÃo de código anticuado que sólo el más brillante gurú de UNIX al borde de la locura lo usarÃa (lo que le causó a yelp repetidamente «kill -9!» Como corre para máquina de café).
Claro, awk no tiene un gran nombre. Pero es un gran lenguaje. Awk está orientada hacia el procesamiento de textos y de generación de informes, sin embargo, ofrece muchas caracterÃsticas bien diseñadas que permiten la programación seria. Y, a diferencia de otros lenguajes, la sintaxis de awk es familiar, y toma prestados algunos de los mejores partes de lenguajes como C, python y bash (aunque, técnicamente, awk fue creado ante python y bash). Awk es uno de los lenguajes que, una vez adquirida, se convertirá en una parte clave de su arsenal estratégico de codificación.
Los nombre de ficheros y todo lo que esté entre / y / se le ha añadido un espacio, téngalo en cuenta.
El primer awk
Vamos a seguir adelante y empezar a jugar con awk para ver cómo funciona. En la lÃnea de comandos, escriba el siguiente comando:
$ awk '{ print }' /etc/passwd
DeberÃa ver el contenido de su archivo / etc / passwd comparecer ante sus ojos. Ahora, para una explicación de lo que hace awk. Cuando especifica el archivo / etc / passwd como nuestro fichero de entrada. Se evaluó el comando de impresión para cada lÃnea en / etc / passwd. Toda la salida se envÃa a stdout, y obtendrá un resultado idéntico que si hace cat / etc / passwd. Ahora, (para una explicación de la impresión) (bloque de código. En awk, las llaves se utilizan para agrupar los bloques de código en conjunto, similar a C. Dentro de nuestro bloque de código, tenemos un solo comando de impresión. En awk, cuando un comando de impresión aparece por sà mismo, todo el contenido de la lÃnea actual se imprimen.
Aquà hay otro ejemplo awk que hace exactamente lo mismo:
$ awk '{ print $0 }' /etc/passwd
¡Atención entre $ y 0, no debe haber espacio!
$ awk '{ print "" }' /etc/passwd
Cada vez que pase el «» a la cadena de comando de impresión, imprime una lÃnea en blanco. Si prueba este script, usted encontrará que awk produce una lÃnea en blanco para cada lÃnea en su archivo / etc / passwd. Una vez más, esto se debe a que awk ejecuta el script de cada lÃnea en el archivo de entrada. He aquà otro ejemplo:
$ awk '{ print "hiya" }' /etc/passwd
Mútiples campos
Awk es muy bueno en cuanto al manejo de texto que está dividido en varios campos lógicos, y te permite referenciar cada individuo dentro de su ámbito awk script. El siguiente script muestra una lista de todas las cuentas de usuario en el sistema:
$ awk -F":" '{ print $1 }' /etc/passwd
Anteriormente, cuando llamamos a awk, usamos la opción -F para especificar «:» como el separador de campo. Cuando los procesos de impresión awk $1 no encuentre un «:», imprimirá el primer campo que aparece en cada lÃnea en el archivo de entrada. He aquà otro ejemplo:
$ awk -F":" '{ print $1 $3 }' /etc/passwd
El resto del artÃculo, ya que lo principal se ha explicado, aquÃ.