Este artículo es parte de la serie de tutoriales y ejemplos de Awk en curso. Como cualquier otro lenguaje de programación, Awk también tiene variables definidas por el usuario y variables integradas.
En este artículo, revisemos cómo definir y usar variables awk .
- Las variables Awk deben comenzar con la letra, seguida de esta puede consistir en caracteres alfanuméricos o guiones bajos.
- Las palabras clave no se pueden usar como una variable awk
- Awk no admite la declaración de variables como otros lenguajes de programación
- Siempre es mejor inicializar las variables awk en la sección BEGIN, que se ejecutará solo una vez al principio.
- No hay tipos de datos en Awk. Que una variable awk se trate como un número o como una cadena depende del contexto en el que se utilice.
Ahora revisemos algunos ejemplos simples para aprender a usar variables awk definidas por el usuario.
Ejemplo 1 de Awk:Facturación de libros
En este ejemplo, el archivo de entrada bookdetails.txt contiene registros con campos:número de artículo, nombre del libro, cantidad y tarifa por libro.
$ cat bookdetails.txt 1 Linux-programming 2 450 2 Advanced-Linux 3 300 3 Computer-Networks 4 400 4 OOAD&UML 3 450 5 Java2 5 200
Ahora, el siguiente script de Awk lee y procesa el archivo bookdetails.txt anterior y genera un informe que muestra:la tasa de cada libro vendido y la cantidad total de todos los libros vendidos.
Hasta ahora hemos visto que Awk lee los comandos desde la línea de comandos, pero Awk también puede leer los comandos desde el archivo usando la opción -f.
Syntax: $ awk -f script-filename inputfilename
Ahora nuestro script Awk para el cálculo de facturación de libros se muestra a continuación.
$ cat book-calculation.awk BEGIN { total=0; } { itemno=$1; book=$2; bookamount=$3*$4; total=total+bookamount; print itemno," ", book,"\t","$"bookamount; } END { print "Total Amount = $"total; }
En el guión anterior,
- Awk Sección BEGIN inicializa el total variable. itemno, total, book, bookamount son variables awk definidas por el usuario.
- En la acción de Awk sección, Cantidad*precio en libros se almacenará en una variable llamada cantidad en libros. Cada importe en libros se sumará al total.
- Finalmente en el Awk FIN sección, la variable total tendrá la cantidad total.
Ahora ejecute el script book-calculation.awk para generar el informe que muestra cada tarifa de libro y el monto total como se muestra a continuación.
$ awk -f book-calculation.awk bookdetails.txt 1 Linux-programming $900 2 Advanced-Linux $900 3 Computer-Networks $1600 4 OOAD&UML $1350 5 Java2 $1000 Total Amount = $5750
Ejemplo 2 de Awk. Cálculo de la nota del estudiante
En este ejemplo, cree un archivo de entrada "student-marks.txt" con el siguiente contenido:nombre del estudiante, número de registro, puntuación de la prueba 1, puntuación de la prueba 2 y puntuación de la prueba 3.
$ cat student-marks.txt Jones 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 65 Edwin 2537 78 67 45 Dayan 2415 30 47 20
Ahora, el siguiente script de Awk calculará y generará el informe para mostrar las calificaciones promedio de cada estudiante, el promedio de las calificaciones de Test1, Test2 y Test3.
$cat student.awk BEGIN { test1=0; test2=0; test3=0; print "Name\tRollNo\t Average Score"; } { total=$3+$4+$5; test1=test1+$3; test2=test2+$4; test3=test3+$5; print $1"\t"$2"\t",total/3; } END{ print "Average of Test1="test1/NR; print "Average of Test2="test2/NR; print "Average of Test3="test3/NR; }
En el script Awk anterior,
- En el Awk BEGIN todas las variables awk se inicializan a cero. test1, test2, test3 y total son variables awk definidas por el usuario.
- En la ACCIÓN Awk sección, $3, $4, $5 son puntajes de Test1, Test2 y Test3 respectivamente. La variable total es la suma de 3 puntajes de prueba para cada estudiante. La variable awk test1, test2 y test3 tiene las puntuaciones totales de cada prueba correspondiente.
- Así que en el FIN Awk sección, dividir el total de cada prueba por el número total de registros (es decir, estudiante) le dará el puntaje promedio. NR es una variable incorporada de Awk que da el número total de registros en la entrada.
Ejemplo 3 de Awk. Informe HTML para los detalles del estudiante
En los dos ejemplos anteriores, hemos visto la variable awk que tiene números como valores. Este ejemplo muestra un script awk para generar el informe html para el nombre de los estudiantes y su número de registro.
$ cat string.awk BEGIN{ title="AWK"; print "<html>\n<title>"title"</title><body bgcolor=\"#ffffff\">\n<table border=1><th colspan=2 align=centre>Student Details</th>"; } { name=$1; rollno=$2; print "<tr><td>"name"</td><td>"rollno"</td></tr>"; } END { print "</table></body>\n</html>"; }
Use el mismo archivo de entrada student-marks.txt que creamos en el ejemplo anterior.
$ awk -f string.awk student-marks.txt <html> <title>AWK</title><body bgcolor="#ffffff"> <table border=1><th colspan=2 align=centre>Student Details</th> <tr><td>Jones</td><td>2143</td></tr> <tr><td>Gondrol</td><td>2321</td></tr> <tr><td>RinRao</td><td>2122</td></tr> <tr><td>Edwin</td><td>2537</td></tr> <tr><td>Dayan</td><td>2415</td></tr> </table></body> </html>
Podemos almacenar la salida anterior, que da la siguiente tabla html. En el script anterior, la variable llamada name y rollno son variables de cadena, porque se usan en contexto de cadena.
Student Details | |
---|---|
Jones | 2143 |
Gondrol | 2321 |
RinRao | 2122 |
Edwin | 2537 |
Dayan | 2415 |
Lecturas recomendadas