awk
/via: https://www.howtogeek.com/562941/how-to-use-the-awk-command-on-linux/
- rule = pattern + action
- todo el comando entre comillas simples
- print- $1,$3,$7: campo 1, 3 y 7 respectivamente (separados por espacio por defecto)
- $NF: último campo
- $0 : la línea entera
 
- cambiar carácter separador: OFS=«<char>«
- BEGINy- ENDse ejecutan antes y después de procesar el texto, en su propio ámbito { }
- -F'<char_separador>': parámetro (previo a sección de procesado) para indicar el caracter separador de campos
- patrones:- debe preceder inmediatamente a la acción que se ha de ejecutar:awk -F: '$3 >= 1000 {print $1,$6}' /etc/passwd 
- los patrones hacen uso de expresiones regulares:awk '/UUID/ {print $0}' /etc/fstab awk '/^UUID/ {print $0}' /etc/fstab 
 
- si el comando es demasiado complejo, se pueda usar como script:- omit.awk
- #!/usr/bin/awk -f BEGIN { # set the input and output field separators FS=":" OFS=":" # zero the accounts counter accounts=0 } { # set field 2 to nothing $2="" # print the entire line print $0 # count another account accounts++ } END { # print the results print accounts " accounts.\n" } 
 - chmod +x omit.awk ./omit.awk <file> 
 
ejemplos
- buscar líneas con 3 palabras solo:awk '{ if ( NF == 3 ) print } ' /path/to/input 
- calcular valor mínimo:seq 1 10 | awk 'NR==1 { MIN=$1; next } $1 < MIN { MIN=$1 } END{ print MIN }' 
- calcular valor máximo:seq 1 10 | awk 'NR==1 { MAX=$1; next } $1 > MAX { MAX=$1 } END{ print MAX }' 
- calcular valor medio:seq 1 10 | awk '{ SUM+=$1 } END { print SUM/NR}' 
- excluir las 2 primeras columnas:awk '{ $1=""; $2=""; print}' filename 
- cambiar el separador de columnas:awk -F':' '{ $1=""; $2=""; print}' filename 
- líneas que empiecen por número hexadecimal de 7 dígitos y 2 espacios (vagrant global-status):awk '/^[a-f0-9]{1,7}\s+/ {print $5}'