Mostrando entradas con la etiqueta awk. Mostrar todas las entradas
Mostrando entradas con la etiqueta awk. Mostrar todas las entradas

3 dic 2010

Otro AWK

Dado que AWK nos permite manejar archivos y procesar datos escritos en ellos de una forma sencilla, ahora un programa para calcular el promedio de un grupo de alumnos.

Primero tenemos el archivo donde se encuentra nuestra lista de nombres y la calificación de cada uno de los alumnos.

Archivo lista.txt


Ahora el código del programa.

Archivo promedio.awk
#!/usr/bin/awk -f 

# Ejecutar como:
# awk -f ./promedio.awk lista.txt"

BEGIN {
  suma = 0;
  contador = 0;
  print "Resultados obtenidos:";
}
{
  suma = suma + $2
  contador = contador + 1
}
END {
  prom = suma / contador;
  print "Los alumnos evaluados fueron " contador;
  print "El promedio del grupo es " prom;
}

La ejecución del programa y el resultado que nos arroja.


En el código al inicio igualamos a cero las variables que usaremos, que son suma y contador, suma para el total de calificaciones y contador para saber cuantos alumnos fueron calificados, y con estos dos datos obtener un promedio.

El archivo se lee linea por linea, y en la parte de "suma" esta sumando la calificación, que se encuentra en la segunda columna con la suma total en ese momento, e incrementamos el contador en uno por cada linea, que nos indicará la cantidad de alumnos.

Al final se imprimen los resultados del contador, es decir, cantidad de alumnos, y promedio del grupo.

2 dic 2010

Soy nuevo en AWK

Las página donde estuve buscando información sobre el uso de AWK fue la siguiente:
The GNU Awk User's Guide

Es un manual muy extenso y completo de AWK. Tiene practicamente todo lo que se puede hacer con AWK, ya que al parecer es la página oficial.

La página esta en inglés, pero hasta yo lo pude entender.

Los temas incluidos en este manual son los siguientes:
General Introduction
1 Getting Started with awk
2 Regular Expressions
3 Reading Input Files
4 Printing Output
5 Expressions
6 Patterns, Actions, and Variables
7 Arrays in awk
8 Functions
9 Internationalization with gawk
10 Advanced Features of gawk
11 Running awk and gawk
12 A Library of awk Functions
13 Practical awk Programs

Vienen ejemplos, así que no estaría mal darles un vistazo.

AWK

AWK es un lenguaje de programación creado con la finalidad de procesar datos basados en texto.

"AWK es ejemplo de un lenguaje de programación que usa ampliamente el tipo de datos de listas asociativas, y expresiones regulares."

Cree un pequeño programa que es de gran ayuda para cuando queremos colocar código HTML en nuestro blog, mediante la edición HTML. Como les mencione en una de mis publicaciones, la posibilidad de colocar código en nuestro blog, y sin que pierda formato se puede colocar entre las etiquetas <:pre> ... <:/pre>, pero hay un problema con esto, ya que si copiamos y pegamos el código tal cual de nuestro archivo html que deseamos mostrar, el cuadro de edición de nuestro blog nos mostrará un mensaje de que no esta permitido el uso de ciertas etiquetas, por ejemplo la de html, head y body, son unas de las que no podemos colocar tal cual las tenemos en un archivo en HTML.

Por si no les ha pasado, les muestro con la siguiente imagen el problema.

Y ahora les muestro la forma de corregir esto, que es cambiando la apertura y cierre de etiqueta, cambiando por el código que representa ese carácter.

Pero cambiar uno por uno los signos "<" y ">" de nuestro código HTML, sería demasiado tardado para una página un tanto extensa.

Por eso cree este pequeño script en AWK que nos cambia estos dos caracteres por su correspondiente representación.

El código es el siguiente:
#!/usr/bin/awk -f
{
gsub("<","\\<");
gsub(">","\\>");
print $0
}
En pocas palabras lo que hace es de un archivo de entrada, en este caso un archivo html, cambia los signos por su correspondiente, y el html nuevo es guardado en un archivo diferente.

Veamos un ejemplo de ejecución:
Como vemos el archivo de entrada es el index.html, y como salida pido que se cree un archivo llamado nuevo.html que será el que ahora fue editado.

Este es el archivo index.html que necesito cambiar:

Este es el archivo nuevo.html creado:

Ahora a partir de este último archivo ya puedo copiar y pegar código para mis entradas en el blog, sin perder tanto tiempo.

Se que el código es muy simple, pero sirve.