GNU/Linux >> Tutoriales Linux >  >> Linux

¿Atrapado en el bucle? Ejemplos de Awk While, Do While, For Loop, Break, Continue, Exit

Este artículo es parte de la serie de ejemplos de tutoriales de Awk en curso. En nuestros artículos anteriores sobre awk, discutimos sobre awk print, variables definidas por el usuario de awk, variables incorporadas de awk, operadores de awk y declaraciones condicionales de awk.

En este artículo, repasemos sobre awk loop declaraciones – while, do while, bucles for , romper, continuar y salir junto con 7 ejemplos prácticos.

Las declaraciones de bucle Awk se utilizan para realizar un conjunto de acciones una y otra vez en sucesión. Ejecuta repetidamente una declaración siempre que la condición sea verdadera. Awk tiene una cantidad de declaraciones en bucle como un lenguaje de programación 'C'.

Awk Mientras Bucle

Syntax:

while(condition)
	actions
  • while es una palabra clave.
  • la condición es una expresión condicional
  • las acciones son el cuerpo del ciclo while que puede tener una o más declaraciones. Si las acciones tienen más de una declaración, debe encerrarse entre llaves.

¿Cómo funciona?Qué raro mientras loop primero verifica la condición, si la condición es verdadera, luego ejecuta la lista de acciones. Una vez que se ha completado la ejecución de la acción, la condición se verifica nuevamente y, si es verdadera, las acciones se realizan nuevamente. Este proceso se repite hasta que la condición se vuelve falsa. Si la condición devuelve falso en la primera iteración, las acciones nunca se ejecutan.

1. Ejemplo de Awk While Loop:crea una cadena de una longitud específica

$awk 'BEGIN { while (count++<50) string=string "x"; print string }'
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

El ejemplo anterior usa el bloque especial 'BEGIN { }' que se ejecuta antes que cualquier otra cosa en un programa Awk. En este bloque, awk while loop agrega el carácter 'x' a la variable 'cadena' 50 veces. count es una variable que se incrementa y se comprueba que es inferior a 50. Por lo tanto, después de 50 iteraciones, esta condición se vuelve falsa. Como este programa Awk no tiene cuerpo, se cierra después de ejecutar el bloque BEGIN.

Bucle Do-While Awk

¿Cómo funciona?Awk Do mientras loop se denomina bucle controlado por salida, mientras que awk while loop se denomina bucle controlado por entrada. Porque while loop primero verifica la condición, luego decide ejecutar el cuerpo o no. Pero el awk do while loop ejecuta el cuerpo una vez, luego repite el cuerpo mientras la condición sea verdadera.

Syntax:

do
action
while(condition)

Incluso si la condición es falsa, al principio la acción se realiza al menos una vez.

2. Awk Do While Loop Ejemplo:Imprime el mensaje al menos una vez

$ awk 'BEGIN{
count=1;
do
print "This gets printed at least once";
while(count!=1)
}'
This gets printed at least once

En el script anterior, la declaración de impresión, ejecutada al menos una vez, si usa la declaración while, primero se verificará la condición después de que el conteo se inicialice a 1, en la primera iteración, la condición será falsa, por lo que la declaración de impresión no t se ejecuta, pero en do while se ejecutará el primer cuerpo, por lo que ejecuta la declaración de impresión.

Declaración de bucle For de Awk

Awk por La instrucción es la misma que awk while loop, pero su sintaxis es mucho más fácil de usar.

Syntax:

for(initialization;condition;increment/decrement)
actions

¿Cómo funciona?Awk por La declaración comienza ejecutando la inicialización, luego verifica la condición, si la condición es verdadera, ejecuta las acciones, luego incrementa o decrementa. Luego, mientras la condición sea verdadera, ejecuta repetidamente la acción y luego incrementa/decrementa.

3. Awk For Ejemplo de bucle. Imprime la suma de campos en todas las líneas.

$ awk '{ for (i = 1; i <= NF; i++) total = total+$i }; END { print total }'
12 23 34 45 56
34 56 23 45 23
351

Inicialmente, la variable i se inicializa a 1, luego verifica si i es menor o igual al número total de campos, luego continúa agregando todos los campos y finalmente la suma se almacena en la variable total. En el bloque END simplemente imprima el total variable.

4. Ejemplo de Awk For Loop:Imprime los campos en orden inverso en cada línea.

$ awk 'BEGIN{ORS="";}{ for (i=NF; i>0; i--) print $i," "; print "\n"; }' student-marks
77  84  78  2143  Jones
45  58  56  2321  Gondrol
37  38  2122  RinRao
95  97  87  2537  Edwin
47  30  2415  Dayan

Hablamos sobre la variable integrada awk NF en nuestro artículo anterior. Después de procesar cada línea, Awk establece la variable NF en la cantidad de campos que se encuentran en esa línea.

El script anterior, se repite en orden inverso comenzando desde NF a 1 y genera los campos uno por uno. Comienza con el campo $NF, luego $(NF-1),…, $1. Después de eso, imprime un carácter de nueva línea.

Ahora veamos algunas otras declaraciones que se pueden usar con la declaración de bucle.

Declaración Awk Break

La instrucción Break se usa para salir del bucle más interno (while, do-while y for loop) que lo encierra.

5. Ejemplo de Awk Break:Awk Script para pasar por solo 10 iteraciones

$ awk 'BEGIN{while(1) print "forever"}'

El ciclo while awk anterior imprime la cadena "para siempre" para siempre, porque la condición nunca falla. Ahora, si desea detener el ciclo después de las primeras 10 iteraciones, consulte el siguiente script.

$ awk 'BEGIN{
x=1;
while(1)
{
print "Iteration";
if ( x==10 )
break;
x++;
}}'
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration

En la secuencia de comandos anterior, verifica el valor de la variable "x", si llega a 10, simplemente salta del ciclo usando la instrucción break.

Declaración de continuación de Awk

La instrucción Continuar salta sobre el resto del cuerpo del ciclo, lo que hace que el próximo ciclo alrededor del ciclo comience de inmediato.

6. Ejemplo de continuación de Awk:Ejecutar el ciclo excepto la quinta iteración

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
x++;
continue;
}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4
Value of x 6
Value of x 7
Value of x 8
Value of x 9
Value of x 10

En el script anterior, imprime el valor de x, en cada iteración, pero si el valor de x llega a 5, simplemente incrementa el valor de x, luego continúa con la siguiente iteración, no ejecutará el resto del cuerpo del bucle, por lo que el valor de x no se imprime para el valor 5. La declaración de continuación tiene el significado solo si usa con en el ciclo.

Declaración de salida de Awk

La declaración de salida hace que el script deje de ejecutar inmediatamente la entrada actual y deje de procesar la entrada; todas las entradas restantes se ignoran.

Exit acepta cualquier número entero como argumento, que será el código de estado de salida para el proceso awk. Si no se proporciona ningún argumento, exit devuelve el estado cero.

7. Ejemplo de salida de Awk:Salir del bucle en la quinta iteración

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
exit;}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4

En el script anterior, una vez que el valor de x llega a 5, llama a exit, lo que detiene la ejecución del proceso awk. Entonces el valor de x se imprime solo hasta 4, una vez que llega a 5 sale.

Lecturas recomendadas

Sed y Awk 101 Hacks, por Ramesh Natarajan . Paso varias horas al día en un entorno UNIX/Linux lidiando con archivos de texto (datos, configuración y archivos de registro). Uso Sed y Awk para todo mi trabajo de manipulación de texto. Basado en mi experiencia con Sed y Awk, he escrito el libro electrónico Sed and Awk 101 Hacks que contiene 101 ejemplos prácticos sobre varias funciones avanzadas de Sed y Awk que mejorarán su vida en UNIX/Linux. Incluso si ha estado usando Sed y Awk durante varios años y no ha leído este libro, hágase un favor y lea este libro. Se sorprenderá con las capacidades de las utilidades Sed y Awk.


Linux
  1. Bash For Loop Guía y ejemplos

  2. Comando de salida de Linux explicado para principiantes (con ejemplos)

  3. El tutorial del comando Numfmt con ejemplos para principiantes

  4. Scripts de Linux:3 procedimientos para bucles while en Bash

  5. Ejemplos de ciclos for y while de Bash

El tutorial del comando fc con ejemplos para principiantes

Bash Scripting – Para bucle explicado con ejemplos

Tutorial de expresiones regulares para ejemplos de Linux (Sed y AWK)

Comprender el bucle for en los scripts de Shell

El bucle while en los scripts de Shell

El Bash FOR Loop explicado y simplificado