Documente Academic
Documente Profesional
Documente Cultură
Sintxis:
awk [-f archivo_programa][-F"caracter"]['programa'][var=valor...][archivo]
ejemplo:
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";"
['programa']
diferencia con el archivo_programa en este caso se especifican los patrones e instrucciones en la misma lnea de
comandos. Los patrones e instrucciones han de ir encerrados entre comillas simples ('). Las instrucciones van
encerradas dentro de llaves { }.
ej.:
[var=valor]
ej.:
awk -f programa.awk
[archivo]
ej.:
variable="hola"
Especifica el archivo de entrada que ser procesado por 'awk', ej. lineas.dat:
lineas.dat
fichero
Uso de variables:
$0 : se refiere a la lnea entera
$1 : se refiere al primer campo/columna (campos separados por espacio o por carcter separador (F":")
$2 : se refiere al segundo campo ... $n : se refiere al campo n
ej.: Mostrar el nombre de usuario ($1) y su UID ($3) del fichero de usuarios:
/etc/passwd
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
END
{ total = 0 }
{ total += $1}
{print "El total es: ", total }
AWK Ejemplos:
1. Creamos el fichero: datos.emp : (nombre, sueldoxhora, horas trabajadas)
Juan,20,0
Luis,15,0
Maria,25,20
Ana,20,16
Pedro,30,15
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
Ej. 1.3: Mostrar nombre de usuario y sueldo : # awk F, {print $1, $2 * $3} datos.emp
ejemplo1.awk
-F,
-f calculo.awk
NR Palabra reservada que muestra el nmero de orden de lnea del fichero a procesar ( ej. {print NR, $0} )
Sentencia
Significado
var = expresin
expresin
if (condicin) accin
accin condicional
acciones alternativas
bucle WHILE
accin compuesta
051422949
051943388
005428776
052970557
052375629
002550123
014301873
050100456
079309554
002915589
008928257
4.3
8
7.5
3
9.5
6
5.5
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:
Suspensos:
No presentados:
Total alumnos:
6
1
4
11
Algunas expresiones parecen inspiradas en el lenguaje C. Otras parece que han servido de inspiracin para el
lenguaje Perl. En realidad muchos lenguajes usan expresiones parecidas.
Vamos a resumir una serie de elementos que intervienen en las expresiones que 'awk' es capaz de manejar.
Operadores aritmticos
Operadores de asignacin.
+ Suma
- Resta
* Multiplicacin
/ Divisin
% Mdulo (resto)
^ Potenciacin
Funciones aritmticas.