Manual introduccion de awk

Solo disponible en BuenasTareas
  • Páginas : 7 (1747 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de noviembre de 2011
Leer documento completo
Vista previa del texto
Introducción a AWK
Francisco Alonso Sarría
Índice
1 Introducción 2
1.1 Adaptar awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Patrones y acciones 4
3 Variables y arrays 5
4 Entrada y salida de datos 6
4.1 Entrada de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Salida de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 Estructuras decontrol 8
5.1 Toma de decisiones . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 Funciones 11
6.1 Funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . 11
6.2 Funciones de manejo de cadenas de caracteres . . . . . . . . . . . 11
6.3 Funciones definidas por el usuario . . . . . . . . . . . . . .. . . 13
7 AWK y BASH 13
7.1 Entrada de parámetros . . . . . . . . . . . . . . . . . . . . . . . 13
7.2 Formateo de ordenes . . . . . . . . . . . . . . . . . . . . . . . . 14
7.3 Llamadas al sistema . . . . . . . . . . . . . . . . . . . . . . . . . 15
1
1 Introducción
AWK es un lenguaje de programación cuya potencia estriba en la capacidad de
obtener grandes resultados con programas deunas pocas lineas. Está especialmente
diseñado para leer y procesar archivos de texto por lo que resulta muy útil su uso
combinado con utras utilidades del sistema operativo.
Para ejecutar un programa escrito en AWK es necesario llamar al programa intérprete
del lenguaje (awk) utilizando como parámetros un programa, escrito entre
comillas simples, y uno o varios ficheros para procesar de acuerdocon ese programa.
AWKasume que va a tener que procesar un flujo de datos (entrada estandar, fichero
de texto, tubería) y que este flujo está medianamente estructurado en registros (lineas)
y campos (columnas).
Por tanto sabe que tiene que leer cada una de sus lineas como si fuese un registro,
separar ese registro en campos, hacer lo que se le ordene con esos campos
y finalmente producir unflujo de salida. Así que el programador apenas tiene que
introducir ningún tipo de instrucción al respecto en el código.
Por ejemplo en la orden:
awk ’{print}’ fichero.txt
el programa de AWK es sólo {print}. Este programa lee todas las lineas del
archivo fichero.txt y las muestra en pantalla. En casi todos los ejemplos vamos
a trabajar con el archivo fichero.txt cuyo contenido es:
Murcia 32 3 4
Albacete 3 4 5 3
Almería 3 3 2
Alicante 4 5 2 2
En algunos de los ejemplos que se verán el programa completo será lo suficientemente
corto para poder aparecer entero en el texto, en estos casos el código empieza
con la llamada al intérprete (awk)1. En otros casos se presentarán lineas de código
de AWK aisladas.
Una de las peculiaridades que permite al intérprete de AWK trabajar comolo hace,
es que al leer cada linea da valores a una serie de variables predefinidas:
• NR es el número de la linea que ha leido
1En linux puedes encontrar otos intérpretes de AWK como gawk o nawk.
2
• NF es el número de campos en la linea que ha leido
• $0 contiene toda la linea leida
• $1, $2, ... $NF cada uno de los campos leidos
Por ejemplo la orden
awk ’{print $NR,$0 }’ fichero.txtmuestra en pantalla las lineas del fichero numeradas.
1 Murcia 3 2 3 4
2 Albacete 3 4 5 3
3 Almería 3 3 2
4 Alicante 4 5 2 2
La orden:
awk ’{print $1," ",$4}’ fichero.txt
mostrará los campos primero y cuarto separados por 3 espacios (uno por cada coma
y otro que corresponde a la cadena de caracteres entre las comas):
Murcia 3
Albacete 5
Almería 2
Alicante 2
Entre las principalesutilidades de AWK destaca:
• Permite producir resúmenes a partir de grandes listados de datos medianamente
estructurados
• Los programas son mucho más cortos que los equivalentes en otros lenguajes
• La posibilidad de crear programas de una sola linea embebidos en shell
scripts e integrados con otras utilidades del sistema mediante redirecciones
o tubería. Por ejemplo la orden ls − l genera un...
tracking img