October 27, 2010

tutorial awk!!

Para la Dra. Schaeffer  clase: lab de lenguajes de progra   jueves V1

Bueno aqui les dejare un poco de info que les ayudara a programar en awk. En mi caso no sabia usarlo muy bien porque no encontraba mucha información sobre este lenguaje, este tutorial me ayudo para poder realizar algunos programas que despues subire.


Un poco de información…
El lenguaje Awk nos puede ser muy útil para la modificación de archivos, realizar bases de datos, para realizar búsquedas y añadir campos en bases de datos. El lenguaje Awk fue diseñado para que se trabaje con archivos estructurados y patrones de texto.
Este lenguaje es muy útil en inventarios, listas de correo y bases de datos simples. Muchos programas realizados en Awk son de una línea de longitud y aunque parezca algo ilógico son de mucha utilidad.
Y como un poco de información el nombre de awk se debe a las iniciales de sus diseñadores: Alfred V. Aho, Peter J. Weinberger y Brian W. Kernighan.

Empecemos a explicar….
Los programas de awk consisten en series de reglas. Cada regla especifica un patrón a buscar, y una acción a realizar cuando en el registro de entrada se halle dicho patrón.
Una regla es un patrón a la que le sigue una acción. Las acciones se encierran entre llaves para que se distingan de los patrones.

patrón {acción}

Ejecutar awk...
Existen varias formas para ejecutar los programas de awk:
Si el programa que vamos a ejecutar, resulta mucho más fácil incluir el programa al ejecutarlo:
Awk ‘ programa’ input-file1 input-file2 ….
Programa consiste en los patrones y acciones que se ejecutaran.

Si el programa es más largo, es de mayor facilidad tenerlo en un fichero:
awk –f program-file input-file1 input file2 …

También se puede utilizar awk sin ficheros de entrada de la siguiente manera:
awk ‘programa ’
Aquí  cualquier cosa que se teclee será tomado como datos de tu programa.
Con esta instrucción awk aplica el programa en entrada estándar, y terminara hasta que indiques el final con las teclas Control-d

Si se tienen programas grandes lo que conviene es tener el programa en un fichero separado:
Awk –f fichero-fuente input-file1 input-file2 …
La instrucción ‘ -f’ es para que awk obtenga el programa del fichero-fuente

Las entradas se leen en unidades llamadas registros, y son procesados por las reglas uno a uno.

Sintaxis…
/foo/ {print $0} à   awk lo que hará será buscar líneas que tengan ‘foo’ y seran impresas, porque print $0 imprime la linea actual
# este es un comentario  à  Los comentarios en awk se escriben con un # al principio de la línea.
BEGIN { print “uno/ndos/ntres” } à Imprimira lo siguiente:
                                                  uno
                                                  dos
                                                  tres
 
Cuando se tiene un documento con la siguiente instrucción se imprime los 2 primeros campos de cada registro de entrada
 
‘{print $1, $2 } ‘ inventario     y la salida seria à pato    2
                                                perro   1
                                                gato    3
 
‘{ print “esto va al principio: “ $1 }’Lista   àcon esto imprimirá en el primer registro
                                                 Del archivo Lista. Como salida seria:
                                                 Esto va al principio: Hola
 
Para llamar funciones se escribe el nombre de la función seguido de la lista de argumentos entre paréntesis:
 
sqrt(x**2 + y**2)   à un solo argumento
funciona(y, x)      à 2 argumentos
rand()              à sin argumentos
 
 
if (x % 2 == 0)
    print “x es par”       à sentencia if
else
    print “x es impar”
 
 
{i = 1
   while (i <= 3) {
       print $i            à sentencia while
       i++
   }
}
 
 
{ i = 1
    do {                   à sentencia do-while
        print $0
        i++
     } while (i <= 10)
}
 
 
{ for (i = 1; i <= 3; i++) à sentencia for   imprime los primeros 3 campos de c/ registro               
      Print $i                             de entrada
}
 
 
{
  if ( $1 > max)
     max = $1
   arr[$1] = $0                à ejemplo de un areglo   la primera regla guarda el numero 
}                                                    de linea mas alto leido y guarda 
END {                                                cada linea
  for ( x = 1; x <= max; i++)                        La segunda regla imprime todas 
    print arr[x]                                     las lineas
  }
 
 
for (i in texto)               à elimina elementos de un arreglo
   delete texto[i]
 
 
 
 
 
function hola ()               à declaración de una función hecha por usuario
{
     Print “ hola a todos”
}
 
 
{ hola() }                     à llamada de función


Bueno aquí les dejo el link de donde descargue el tutorial espero les sirva. En el tutorial viene mucho mas información sobre operadores, otras maneras de imprimir, mas información de arreglos....

http://www.loquefaltaba.com/documentacion/Manual_Awk_castellano.pdf 

Espero les sea de gran ayuda... (Y)

1 comment: