AWK - Flujo de trabajo
Para convertirse en un programador experto en AWK, necesita conocer sus aspectos internos. AWK sigue un flujo de trabajo simple: lectura, ejecución y repetición. El siguiente diagrama muestra el flujo de trabajo de AWK:
Leer
AWK lee una línea del flujo de entrada (archivo, tubería o stdin) y la almacena en la memoria.
Ejecutar
Todos los comandos AWK se aplican secuencialmente en la entrada. Por defecto, AWK ejecuta comandos en cada línea. Podemos restringir esto proporcionando patrones.
Repetir
Este proceso se repite hasta que el archivo llega a su fin.
Estructura del programa
Entendamos ahora la estructura del programa de AWK.
BEGIN bloque
La sintaxis del bloque BEGIN es la siguiente:
Syntax
BEGIN {awk-commands}
El bloque BEGIN se ejecuta al inicio del programa. Se ejecuta solo una vez. Este es un buen lugar para inicializar variables. BEGIN es una palabra clave AWK y, por lo tanto, debe estar en mayúsculas. Tenga en cuenta que este bloque es opcional.
Bloque de cuerpo
La sintaxis del bloque de cuerpo es la siguiente:
Syntax
/pattern/ {awk-commands}
El bloque de cuerpo aplica comandos AWK en cada línea de entrada. De forma predeterminada, AWK ejecuta comandos en cada línea. Podemos restringir esto proporcionando patrones. Tenga en cuenta que no hay palabras clave para el bloque Cuerpo.
Bloque FIN
La sintaxis del bloque END es la siguiente:
Syntax
END {awk-commands}
El bloque END se ejecuta al final del programa. END es una palabra clave AWK y, por lo tanto, debe estar en mayúsculas. Tenga en cuenta que este bloque es opcional.
Creemos un archivo marks.txt que contiene el número de serie, el nombre del alumno, el nombre de la asignatura y el número de notas obtenidas.
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Vamos a mostrar ahora el contenido del archivo con el encabezado utilizando un script AWK.
Example
[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt
Cuando se ejecuta este código, produce el siguiente resultado:
Output
Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Al principio, AWK imprime el encabezado del bloque BEGIN. Luego, en el bloque del cuerpo, lee una línea de un archivo y ejecuta el comando de impresión de AWK que simplemente imprime el contenido en el flujo de salida estándar. Este proceso se repite hasta que el archivo llega al final.