awk
Variables predefinidas
- NR – Número de la línea que ha leido.
- NF – Número de campos en la linea que ha leido
- $0 – Contiene toda la línea
- $1,$2... – Cada uno de los campos leidos
Ejemplo:
awk ´{print $NR,$0 }´ fichero.txt
awk ’{print $1," ",$4}’ fichero.txt
awk ´{print $NR,$0 }´ fichero.txt
awk ’{print $1," ",$4}’ fichero.txt
Código para resumir grandes listados de datos en un sola línea, insertados en shell/scripts e integrados con otras utilidades del sistema:
Ejemplo:
ls -l | awk ´$5>200000{print $0}´>demasidosgrantes.txt
Patrones
Begin
Permite definir acciones que se ejecutarán antes de empezar a procesar el fichero o dato de entrada.
END
Ejecutará acciones al final del proceso.
Awk ’
BEGIN{print "Provincia V1 V2 V3 V4"}
$3>4{print $0}
END{print "ADIOS."}
’ fichero.txt
Variables y Arrays
awk ’{V4=$4;print NR,V4}’ fichero.txt
awk ’
{
V1[$1]=$2;V2[$1]=$3
}
END
{
print V2["Albacete"]
}
’ fichero.txt
Salida de Datos
awk ’{nombre="Pepe";print "Hola",nombre}
- %d Número entero
- %nd Número entero formateado a n caracteres
- %f Número real
- %m.nf Número real con n decimales formateado a m caracteres
- %s Cadena de caracteres
awk ’
{
printf("Registro número %d:
Provincia=%s
Variable 2=%5d\n",NR,$1,$2,$3)
}
’ fichero.txt
Varias Funciones
- Funciones Matemáticas. - int – sqrt – exp – log – sin- cos – atan2 – rand -srand
- Funciones Strings
- length
- index
awk ’{print $1,index($1,"a")}’ fichero.txt - split
echo "fichero1.jpg fichero2.png"|awk ’{split($1,cad,".")}’ fichero.txt - sub
sub(expresion,sustituto,cadena) - toupper
- tolower
Ejemplo de función
awk ’{print $1,maximo($2,$3)}
function maximo(a,b)
{
if (a>b){
return a
}
else{
return b
}
}’ fichero.txt