1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Para contar las veces que aparece un determinado patrón, en este ejemplo contamos la veces que aparece el string "Invalid user" en /var/log/secure: awk '/Invalid user/ { count+=1 } END { print count }' /var/log/secure Imprimir con AWK un determinado rango de columnas, en este caso se procesa un log de Apache para imprimir únicamente el contenido entre la primera y quinta columna: cat /var/log/apache2/woop.es-access.log | awk '{ for (x=1; x<=5; x++) { printf "%s ", $x } printf "\n" }' Para sumar el tamaño total ocupado por los ficheros de un directorio: ls -l /var/log/httpd | awk '{ sum += $5 } END { print sum }' Podemos hacer mas flexible la suma de columnas en AWK - añadiendo una condición, en este ejemplo limitamos la suma del tamaño de los ficheros a aquellos en los que el usuario "apache" sea el propietario del mismo: ls -l /var/log/httpd | awk ' $3 == "apache" { sum += $5 } END { print sum }' Listar los usuarios con USERID mayor o igual a 1000 que son aquellas personas físicas que agregamos en el sistema awk -F":" '{ if ($3 >= 1000) { print $1 ": " $5} }' /etc/passwd awk -F":" '{ if ($3 >= 1000) { print $1 ": " $5} }' /etc/passwd | sort -d | nl | less Pero, lo que es realmente maravilloso en este caso es que podemos acceder al valor del campo que se encuentra en el último lugar con tan solo $NF en lugar de NF: awk '{ print NF, “:”, $NF }' alumnos.txt También podemos acceder al penúltimo campo empleando una expresión aritmética: awk '{ print $(NF - 1) }' alumnos.txt Combinando ambos, es fácil obtener el penúltimo y ultimo campo de cada línea. awk '{ print $(NF - 1), $NF }' alumnos.txt |