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 integradas de awk y operadores de awk.
En este tutorial de awk, revisemos las sentencias if condicionales de awk con ejemplos prácticos.
Awk admite muchas declaraciones condicionales para controlar el flujo del programa. La mayor parte de la sintaxis de declaraciones condicionales de Awk se parece al lenguaje de programación 'C'.
Normalmente, la declaración condicional verifica la condición antes de realizar cualquier acción. Si la condición es verdadera, se realizan acciones. Se puede realizar una acción similar si la condición es falsa.
La declaración condicional comienza con la palabra clave llamada "si". Awk admite dos tipos diferentes de declaración if.
- Declaración If simple de Awk
- Awk declaración If-Else
- Awk If-ElseIf-Escalera
Declaración If simple de Awk
Acción única: La instrucción If simple se usa para verificar las condiciones, si la condición devuelve verdadero, realiza la(s) acción(es) correspondiente(s).
Syntax: if (conditional-expression) action
- si es una palabra clave
- expresión-condicional – expresión para verificar condiciones
- acción:cualquier instrucción awk para realizar una acción.
Acción múltiple: Si la expresión condicional devuelve verdadero, se realizará la acción. Si es necesario realizar más de una acción, las acciones deben encerrarse entre llaves, separándolas en una nueva línea o punto y coma, como se muestra a continuación.
Syntax: if (conditional-expression) { action1; action2; }
Si la condición es verdadera, todas las acciones encerradas entre llaves se realizarán en el orden dado. Después de realizar todas las acciones, continúa ejecutando las siguientes instrucciones.
Awk If Else declaración
En la declaración awk If anterior, no hay un conjunto de acciones en caso de que la condición sea falsa. En la instrucción awk If Else puede dar la lista de acciones a realizar si la condición es falsa. Si la condición devuelve verdadera, se realizará la acción 1, si la condición es falsa, se realizará la acción 2.
Syntax: if (conditional-expression) action1 else action2
Awk también tiene un operador condicional, es decir, operador ternario ( ?:) cuya función es similar a la declaración If Else de awk. Si la expresión condicional es verdadera, se realizará la acción 1 y si la expresión condicional es falsa, se realizará la acción 2.
Syntax: conditional-expression ? action1 : action2 ;
Awk If Else If escalera
if(conditional-expression1) action1; else if(conditional-expression2) action2; else if(conditional-expression3) action3; . . else action n;
- Si la expresión-condicional1 es verdadera, se realizará la acción1.
- Si la expresión-condicional1 es falsa, entonces se verificará la expresión-condicional2, si es verdadera, se realizará la acción2 y continuará así. La última parte se realizará si ninguna de las expresiones condicionales es verdadera.
Ahora vamos a crear el archivo de entrada de muestra que tiene las calificaciones de los estudiantes.
$cat student-marks Jones 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 Edwin 2537 87 97 95 Dayan 2415 30 47
1. Awk If Ejemplo:Comprobar que todas las marcas existen
$ awk '{ if ($3 =="" || $4 == "" || $5 == "") print "Some score for the student",$1,"is missing";' }' student-marks Some score for the student RinRao is missing Some score for the student Dayan is missing
$3, $4 y $5 son puntajes de exámenes del estudiante. Si el puntaje de la prueba es igual a vacío, arroja el mensaje. || el operador debe verificar que alguna de las marcas no exista, debe alertar.
2. Awk If Else Ejemplo:generar un informe de aprobado/reprobado basado en las calificaciones de los estudiantes en cada materia
$ awk '{ if ($3 >=35 && $4 >= 35 && $5 >= 35) print $0,"=>","Pass"; else print $0,"=>","Fail"; }' student-marks Jones 2143 78 84 77 => Pass Gondrol 2321 56 58 45 => Pass RinRao 2122 38 37 => Fail Edwin 2537 87 97 95 => Pass Dayan 2415 30 47 => Fail
La condición para Aprobado es que toda la puntuación de la prueba debe ser mayor o igual a 35. Por lo tanto, todas las puntuaciones de las pruebas se verifican si son mayores de 35, luego se imprime la línea completa y la cadena "Aprobado", de lo contrario, incluso si cualquiera de el puntaje de la prueba no cumple con la condición, imprime la línea completa e imprime la cadena "Falla".
3. Awk If Else If Ejemplo:Encuentre el promedio y la calificación de cada estudiante
$ cat grade.awk { total=$3+$4+$5; avg=total/3; if ( avg >= 90 ) grade="A"; else if ( avg >= 80) grade ="B"; else if (avg >= 70) grade ="C"; else grade="D"; print $0,"=>",grade; } $ awk -f grade.awk student-marks Jones 2143 78 84 77 => C Gondrol 2321 56 58 45 => D RinRao 2122 38 37 => D Edwin 2537 87 97 95 => A Dayan 2415 30 47 => D
En el script awk anterior, la variable llamada 'promedio' tiene el promedio de los tres puntajes de las pruebas. Si el promedio es mayor o igual a 90, entonces la calificación es A, o si el promedio es mayor o igual a 80, entonces la calificación es B, si el promedio es mayor o igual a 70, entonces la calificación es C. O de lo contrario, la calificación es D.
4. Awk Ternary ( ?:) Ejemplo:Concatenar cada 3 líneas de entrada con una coma.
$ awk 'ORS=NR%3?",":"\n"' student-marks Jones 2143 78 84 77,Gondrol 2321 56 58 45,RinRao 2122 38 37 Edwin 2537 87 97 95,Dayan 2415 30 47,
Discutimos sobre la variable integrada awk ORS anteriormente. Esta variable se agrega después de cada línea que obtiene la salida. En este ejemplo, se cambia cada 3.ª línea de una coma a una nueva línea. Para las líneas 1, 2 es una coma, para la línea 3 es una nueva línea, para las líneas 4, 5 es una coma, para la línea 6 es una nueva línea, etc.
Lecturas recomendadas