GNU/Linux >> Tutoriales Linux >  >> Linux

4 Ejemplos de sentencias If de Awk (if, if else, if else if, :? )

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.

  1. Declaración If simple de Awk
  2. Awk declaración If-Else
  3. 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

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. Cómo usar la declaración condicional if else en Bash Script

  2. Declaración de Bash If-Else con ejemplos

  3. Tutorial de introducción de Awk:7 ejemplos de impresión de Awk

  4. 4 Ejemplos de declaraciones If de Bash (If then fi, If then else fi, If elif else fi, Nested if)

  5. declaración Bash/sh 'if else'

Declaración de Bash if..else

Declaración de Python if..else

Comando awk de Linux con 10 ejemplos

10 impresionantes ejemplos de comandos Awk en Linux

Sintaxis de Bash If Else con ejemplos

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