Comandos AWK Esenciales para la Gestión de Textos en Linux

Clasificado en Informática

Escrito el en español con un tamaño de 3,39 KB

A continuación, se presentan una serie de comandos AWK útiles para la manipulación y el procesamiento de texto en entornos Linux.

Operaciones Básicas con AWK

  • Quitar las líneas vacías de un archivo:

    awk '!/^$/ {}' archivo

  • Mostrar el login de los usuarios que están conectados:

    w | awk 'NR>2 {print $1}'

  • Mostrar el login y el nombre completo de los usuarios cuyo login empieza y termina en a:

    awk 'BEGIN {FS=":"} /^a[^:]*a:/ {print $1,$5}' /etc/passwd

  • Borrar solo archivos (puede hacerse con rm nada más, pero qué pasa con alias como 'rm -r'):

    ls -l * | grep -v drwx | awk '{print "rm "$9}' | sh

  • Imprime sólo los nombres de usuarios del archivo /etc/passwd:

    awk -F: '{ print $1 }' /etc/passwd

  • Imprimir todas las líneas del archivo con número de línea:

    awk '{ print NR $0 }'

  • Escribir un comando AWK que cumpla la misma función que wc -l archivo:

    awk 'END { print NR }' archivo

  • Mostrar sólo los nombres y los tamaños de los archivos del directorio actual:

    ls -l | awk '{ print $8 ":" $5 }'

  • Mostrar sólo los nombres y tamaños de archivos .txt:

    ls -l | awk '$8 ~ /\.txt/ { print $8 ":" $5 }'

  • Imprimir las líneas de un archivo que tengan más de 4 campos/columnas:

    awk 'NF > 4 {print}' archivo

  • Imprimir el último campo de cada línea de un archivo:

    awk '{ print $NF }' archivo

  • Imprimir los campos de cada registro o línea de un archivo en orden inverso:

    awk '{ for (i = NF; i > 0; --i) print $i }' fichero

Operaciones Avanzadas con AWK

  • Imprimir última línea de un archivo:

    awk '{line = $0} END {print line}' archivo

  • Imprimir las primeras 10 líneas de un archivo:

    awk 'NR < 10 {print}' archivo

  • Mostrar todas las líneas de un archivo que contengan una determinada cadena:

    awk '/cadena/ { print }' archivo

  • Mostrar todas las líneas de un archivo que NO contengan una determinada cadena:

    awk '! /cadena/ { print }' archivo

  • Mostrar en pantalla los campos 1 y 3 del archivo /etc/passwd:

    awk -F":" '{ print $1 "\t" $3 }' /etc/passwd

  • Calcular la suma y el promedio de todas las primeras columnas del archivo:

    awk '{ suma += $1 } END { print "suma:", suma, " media:", suma/NR }' archivo

  • Imprimir los usuarios ordenados y su hora de conexión (primero este campo):

    who | awk '{print $5, $1}' | sort

  • Imprimir un número decimal reservando espacio para 4 dígitos (NR = número de línea actual), un string ($0 = la línea completa), y salto de línea:

    awk '{printf "%4d %s\n", NR, $0}' archivo

Entradas relacionadas: