Professional Documents
Culture Documents
Sintxis:
ejemplo:
awk -F":" '/root/ {print $1}' /etc/passwd
awk -F";" '/[^A-Za-z]/ {print $0}' lineas.dat (comienzan por una letra)
Explicacin:
[-f archivo_programa] especifica un archivo fuente (script) con los comandos del programa a aplicar.
ej.: -f contar.awk
[-F"caracter"] especifica el carcter que separa cada campo en una lnea. Aqu es ";"
ej.: -F";"
[archivo] Especifica el archivo de entrada que ser procesado por 'awk', ej. lineas.dat:
Coleccin de clusulas ' /patrn/ { accin } ' ej. # awk '/cadena/ { print $1}' fichero
Patrn omitido se cumple siempre ej.: # awk '{print $3}' fichero
Accin omitida { print } (imprimir lnea)
Patrn /expr.regular/ debe ajustarse a la lnea
Patrn expr. aritmt. cumple si no nulo
Imprimir primeras N lneas: # awk 'NR < 10 {print}'
Uso de variables:
ej.: Mostrar el nombre de usuario ($1) y su UID ($3) del fichero de usuarios:
1. Parte inicial, que se ejecuta slo una vez, antes de empezar a procesar la entrada:
BEGIN { operaciones }
2. Parte central, con instrucciones que se ejecutan para cada una de las lneas de la entrada; tienen en
siguiente formato:
/PATRN/ { operaciones }
las operaciones se realizan slo sobre las lneas que verifiquen la REGEXP indicada en PATRN
o si ponemos !/PATRN/ las operaciones se ejecutan en las lneas que no concuerden con el patrn
3. Parte final, se efecta slo una vez, despus de procesar la entrada:
END { operaciones }
BEGIN { total = 0 }
{ total += $1}
END {print "El total es: ", total }
Ej. 1.1: Mostrar nombre de usuario y horas trabajadas: # awk F, {print $1,$3} datos.emp
Explicacin:
-F"," : especifica que los campos en cada lnea estn separados por comas
'{print $1, $3}' es el programa a ejecutar: muestra los campos primero ($1) y tercero ($3)
datos.emp es el fichero de entrada. Cada lnea leda ser procesada y mostrar $1 y $3
Ej. 1.2: Mostrar nombre de usuario que ha trabajado : # awk F, $3 > 0 {print $1} datos.emp
Explicacin:
$3 > 0 es la condicin que se ha de cumplir para ejecutar la parte del programa.
Ej. 1.3: Mostrar nombre de usuario y sueldo : # awk F, {print $1, $2 * $3} datos.emp
NR Palabra reservada que muestra el nmero de orden de lnea del fichero a procesar ( ej. {print NR, $0} )
Otras palabras reservadas:
Sentencia Significado
print expresin, expresin ... imprime valores separados por espacio en blanco
Ejemplo: recuento de notas
Para dar una idea rpida de cmo es un programa en AWK, a continuacin se presenta como
ejemplo el proceso de una lista de calificaciones de un examen para obtener un resumen
estadstico simple. El significado de los elementos que aparecen en el programa se ir viendo en
los siguientes apartados.
051422949 4.3
051943388 8
005428776 7.5
052970557
052375629 3
002550123 9.5
014301873
050100456 6
079309554 5.5
002915589
008928257 8.7
$1 {alumnos++}
$2 >= 5 {aprobados++}
NF==1 {nopresentados++}
END {
suspensos = alumnos - aprobados - nopresentados
print "Aprobados: ", aprobados
print "Suspensos: ", suspensos
print "No presentados:", nopresentados
print "Total alumnos: ", alumnos
}
Resultados:
Aprobados: 6
Suspensos: 1
No presentados: 4
Total alumnos: 11
Las funciones utilizables en las condiciones y comandos son, entre otras:
close(fichero_a_reiniciar_desde_cero)
cos(x), sin(x)
index()
int(num)
lenght(string)
substr(str,pos,len)
tolower()
toupper()
system(orden_del_sistema_a_ejecutar)
printf()
Los operadores soportados por awk son los siguientes:
if ( expr ) statement
if ( expr ) statement else statement
while ( expr ) statement
do statement while ( expr )
for ( opt_expr ; opt_expr ; opt_expr ) statement
for ( var in array ) statement
continue, break
(condicion)? a : b if(condicion) a else b;
Las operaciones de bsqueda son las siguientes: