Cómo usar declaraciones de control de flujo en Awk-Parte 12

Cómo usar declaraciones de control de flujo en Awk-Parte 12

Cuando revise todos los ejemplos de Awk que hemos cubierto hasta ahora, desde el comienzo de la serie Awk, notará que todos los comandos en los diversos ejemplos se ejecutan secuencialmente, es decir, uno tras otro. Pero en ciertas situaciones, es posible que queramos ejecutar algunas operaciones de filtrado de texto basadas en algunas condiciones, ahí es donde se establece el enfoque de las declaraciones de control de flujo.

 Usar declaraciones de control de flujo en Awk Usar declaraciones de control de flujo en Awk Usar declaraciones de control de flujo en Awk

Hay varias declaraciones de control de flujo en la programación de Awk y estas incluyen:

  1. sentencia if-else
  2. para sentencia
  3. sentencia while
  4. sentencia do-while
  5. sentencia break
  6. continuar declaración
  7. siguiente declaración
  8. instrucción nextfile
  9. instrucción exit

Sin embargo, para el alcance de esta serie, expondremos las declaraciones: if-else, for, while y do while. Recuerde que ya explicamos cómo usar la siguiente declaración en la Parte 6 de esta serie Awk.

1. La sentencia if-else

La sintaxis esperada de la sentencia if es similar a la del shell sentencia if.

if (condición1) actions1 else actions2

En la sintaxis anterior, condition1 y condition2 son expresiones Awk, y actions1 y actions2 son comandos Awk que se ejecutan cuando se cumplen las condiciones respectivas.

Cuando se cumple la condición1. lo que significa que es verdadera, se ejecutan acciones1. y se cierra la instrucción if. de lo contrario, se ejecutan acciones2.

La instrucción if. también se puede expandir a una instrucción if-else_if-else como se muestra a continuación:

if (condición1) acciones1 más si (condiciones2) acciones2 más acciones3

Para el formulario anterior, si condición1. es verdadera, entonces acciones1. se ejecuta ted y la sentencia if. sale; de ​​lo contrario, se evalúa condition2. y, si es verdadera, se ejecuta actions2. y la sentencia if. sale. Sin embargo, cuando condición2. es falsa, acciones3. se ejecutan y la instrucción if. sale.

Aquí hay un caso en Para usar declaraciones if. tenemos una lista de usuarios. y sus edades. almacenada en el archivo, users.txt.

Queremos imprimir una declaración que indique el nombre de un usuario y si la edad del usuario es menor o mayor que 25. años.

[email protected] ~ $. cat users.txt. Sarah L 35 F Aaron Kili 40 M John Doo 20 M Kili Seth 49 M

Podemos escribir un breve script de shell para realizar nuestro trabajo anterior, aquí está el contenido del script:

#!/bin/bash awk ‘if ($ 3 <= 25) print "User", $ 1, $ 2, "is menos de 25 años ". ; else print "Usuario", $ 1, $ 2, "tiene más de 25 años"; '~/users.txt

Luego guarde el archivo y salga, haga que el script sea ejecutable y ejecútelo de la siguiente manera:

$ chmod + x test.sh $ ./test.sh Ejemplo de usuario de salida Sarah L tiene más de 25 años El usuario Aaron Kili tiene más de 25 años El usuario John Doo tiene menos de 25 años. El usuario Kili Seth tiene más de 25 años

2. La instrucción for

En caso de que desee ejecutar algunos comandos Awk en un bucle, la instrucción for. le ofrece una forma adecuada de hacerlo, con la siguiente sintaxis:

Aquí, el enfoque se define simplemente mediante el uso de un contador para controlar la ejecución del ciclo, primero debe inicializar el contador, luego ejecutarlo contra una condición de prueba, si es verdadera, ejecutar las acciones y finalmente Incrementar el contador. El ciclo termina cuando el contador no satisface la condición.

for (counter-initialization; test-condition; counter-increment) actions

El siguiente comando Awk muestra cómo la instrucción for. funciona, donde queremos imprimir los números 0-10.

$ awk ‘BEGIN for (contador = 0; contador <= 10; contador ++) imprimir contador' Salida de muestra 0 1 2 3 4 5 6 7 8 9 10

3. La instrucción while

La sintaxis convencional de la instrucción while. es la siguiente:

while (condición) acciones

La condición es una expresión y acciones Awk son líneas de comandos Awk que se ejecutan cuando la condición es verdadera.

A continuación se muestra un script para ilustrar el uso de instrucción while. para imprimir los números 0-10.

#!/bin/bash awk ‘COMIENZO contador = 0; while (contador <= 10) contador de impresión; contador + = 1;

Guarde el archivo y haga que el script sea ejecutable, luego ejecútelo:

$ chmod + x test.sh $ ./test.sh Salida de muestra 0 1 2 3 4 5 6 7 8 9 10

4. La instrucción do while

Es una modificación de la instrucción while. anterior, con la siguiente sintaxis subyacente:

do actions while (condición)

La La ligera diferencia es que, en do while. los comandos Awk se ejecutan antes de que se evalúe la condición. Utilizando el ejemplo de la instrucción while. anterior, podemos ilustrar el uso de do while. modificando el comando Awk en el script test.sh. como sigue:

#!/bin/bash awk ‘BEGIN contador = 0; hacer contador de impresión; contador + = 1; while (contador <= 10) '

Después de modificar el script, guarde el archivo y salga. Luego haga que el script sea ejecutable y ejecútelo de la siguiente manera:

$ chmod + x test.sh $ ./test.sh Salida de muestra 0 1 2 3 4 5 6 7 8 9 10

Conclusión

Esta no es una guía completa con respecto a las declaraciones de control de flujo de Awk, como mencioné anteriormente, hay varias otras declaraciones de control de flujo. en Awk.

No obstante, esta parte de la serie Awk debería darle una idea fundamental clara de cómo se puede controlar la ejecución de los comandos Awk en función de ciertas condiciones.

También puede exponer más sobre el resto de las declaraciones de control de flujo para comprender mejor la materia. Finalmente, en la siguiente sección de la serie Awk, pasaremos a escribir guiones Awk.