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.