'awk' es un lenguaje muy completo y no podía faltar las sentencias de ejecución condicional y de ejecución en bucle.
Algunos de los conceptos que vamos a comentar ya los hemos visto cuando hablamos de la programación en bash y no vamos a explicar con demasiado detalle cada tipo de sentencia. La sintaxis que usa awk no se parece a la sintaxis que ya hemos visto para bash. Se parece más a la sintaxis del lenguaje C. De todas formas los conceptos ya nos resultan familiares y usaremos algunos ejemplos para ilustrarlos.
Empezaremos describiendo la sintaxis de cada tipo de sentencia. Denominaremos acción a una sentencia simple o a una sentencia compuesta de la forma '{ sentencia1 ; sentencia2 ; ... }'
Sentencia condicional 'if'
if ( expresión_lógica )
accion1
[ else
accion2 ]
Sentencia condicional con los operadores '?' y ':'
expresion_lógica ? accion1 : accion2
Bucle 'while'
while ( expresión_lógica ) accion
Bucle 'do' 'while'
do accion while ( expresión_lógica )
Bucle 'for'
for ( inicializar_contador ; comprobar_contador ; modificar_contador ) accion
Dentro de los bucles podemos usar
break para forzar la salida de un bucle o
continue para saltar a la siguiente iteración.
Veremos de momento tan solo un ejemplo para la sentencia condicional 'if'.
Edite el siguiente fichero que llamaremos 'contabil4.awk'
|| BEGIN { FS="\|" ; }
/[0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9]\|/ {
if ( $3 >= 0) {
printf ("%3d, %s, %s, %s\n", NR, $1, $2, $3);
}
}
||
Vamos a ejecutar este ejemplo y vamos a ver su salida
|| $ awk -f contabil4.awk < contabil.dat 3, 01-01-1999, - , 96
7, 27-01-2000, INGRESO , 141200
11, 06-03-2000, INGRESO , 101300
14, 07-04-2000, INGRESO , 134000
17, 09-05-2000, INGRESO , 95000
21, 07-06-2000, INGRESO , 130000
25, 10-07-2000, INGRESO , 99000
28, 10-08-2000, INGRESO , 122355
30, 10-09-2000, INGRESO , 129000
34, 10-10-2000, INGRESO , 112000
||