Skip to main content

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