Lab Shell Script #3: Como generar un reporte en AWK

Daniel M. Maldonado el 17/01/2012 con 2 Comentarios

Vamos a seguir trabajando un poco más con programación en la consola de GNU, ahora bien, para armar algunos informes o reportes y crear plantillas en AWK, la verdad que es realmente muy fácil, rápido y sobre todo muy útil.

Como en estos últimos artículos, me gustaría seguir utilizando como ejemplo el archivo /etc/passwd realmente es muy útil para ir aprendiendo todo sobre estos formatos de archivos, separa los campos, agregar sentencias, condiciones, etc.

Lo primero para comenzar a trabajar es crear un archivo llamados por ejemplo “informe_usuarios.awk” con nuestro editor favorito y comenzar a editarlo. Les recuerdo que no es obligatorio la extensión .awk, es simplemente a modo de recordar con que lenguaje está programado, nada más.

Los invito a agregar estas dos líneas de código:

1
2
#!/usr/bin/awk -f
BEGIN { FS = ":" }

En la primera línea estamos asociando este script al intérprete de awk, muy similar a lo que hacemos con bash, python o ruby. En la segunda línea de nuestro script, le estamos indicando la separación de los campos, por defecto utiliza las tabulaciones o espacios, para el archivo /etc/passwd utilizamos los “:”

Ahora me gustaría ver un poco el diseño de una aplicación en Awk con los patrones BEGIN y END que se organizan de la siguiente manera

1
2
3
BEGIN { acciones previas al procesamiento de la entrada }
patrón { acciones durante el procesamiento de la entrar }
END { acciones posteriores al procesamiento de la entrada }

Sabiendo esto, le vamos a agregar a nuestro generador de informes las siguientes línea de código

1
2
3
4
5
6
BEGIN { printf "%-11s%-15s%-15s\n","ID","Usuario","Nombre" }
$3 >= 1000 { printf "%-11s%-15s%-15s\n",$3,$1,$5 ; USUARIOS += 1}
$3 < 1000 { SISTEMA += 1}
END { print "--------------------------" }
END { print USUARIOS " Usuarios registrados" }
END { print SISTEMA " Usuarios de Sistema" }

Gracias a printf vamos a darle un formato de tabulaciones a las columnas ID, Usuario y Nombre, por otro lado se puede apreciar que vamos a contar por un lado los usuarios que registramos y por el otro los usuarios que crea el sistema ya sea al momento de la instalación como así también con los servicios que instalamos.

Al final de todo solo queda imprimir los dos valores calculados para tener una noción de la cantidad de usuarios, lo importante de todo esto es aprender la interactividad que utiliza AWK y la forma en la cuál podemos realizar operaciones, impresiones, cálculos, etc.

Dejemos hasta aquí este informe de usuarios, guardamos y cerramos el archivo, le asignamos permiso de ejecución para el dueño de la siguiente manera

1
$ chmod u+x informe_usuarios.awk

y solo quedará ejecutarlo y ver nuestra información de la siguiente manera

1
$ ./informe_usuarios.awk /etc/passwd

Es interesante ver que necesitamos enviarle como parámetro un archivo con el formato original del passwd

Estoy seguro que ustedes tiene más de una modificación para implementar al script, y me gustaría que lo vallamos viendo y probando para ir mejorandolo.

Enlace | Código Fuente de informe_usuarios.awk


Tec. Informático, Analista en Sistema y Estudiante de Ing. en computación, Emprendedor, Creador y Webmaster de LaREPAWEB, El CoDiGo K, TeknoFlash, SQLite Latino.

De momento hay 2 comentarios ¿Quieres dejar el tuyo?

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Vamos a seguir trabajando un poco más con programación en la consola de GNU, ahora bien, para armar algunos informes o reportes y crear plantillas en AWK, la verdad que es realmente muy fácil, rápido y sobre todo muy útil. Co…..

  2. [...] Lab Shell Script #3: Como generar un reporte en AWK [...]

Leave a Reply

*

web stats