Comando awk de Linux: analiza archivos

El comando awk te permite explorar archivos y llevar a cabo determinadas acciones. El origen del comando de Linux se remonta a 1977.

¿Qué es el comando awk de Linux?

awk permite que Linux analice y edite archivos en su lenguaje de scripting y programación. awk se creó en 1977 y su nombre hace referencia a sus tres desarrolladores, Alfred Aho, Peter Weinberger y Brian Kernighan. El comando awk es una herramienta que se utiliza desde la línea de comandos o desde una SSH (Secure Shell). Además, funciona de forma parecida al comando grep de Linux, ya que permite buscar ciertos patrones en los archivos y, en determinadas circunstancias, modificarlos de forma automática en función de parámetros predefinidos.

¿Cómo funciona el comando awk?

awk utiliza una combinación de condiciones y sentencias. Una vez se ejecuta el comando awk para un archivo concreto, recorre todas y cada una de sus líneas y comprueba si cumple una condición predeterminada. La sentencia del comando awk se ejecuta en cada una de las líneas que cumplen la condición. Si el comando awk no tiene ninguna condición predefinida, la sentencia se ejecuta en todas las líneas del archivo. Si el comando awk no tiene ninguna sentencia predefinida, se ejecuta la sentencia estándar de la línea de comandos. Es decir, puedes utilizar awk en Linux para, por ejemplo, buscar términos o patrones dentro de archivos.

¿Cómo es la sintaxis del comando awk?

La sintaxis del comando awk en Linux es la siguiente:

$ awk [opción] "condición {sentencia}" [archivo obtenido]
shell

¿Qué opciones tiene el comando awk de Linux?

Hay tres posibles opciones:

  • -F [Separador]: define el elemento separador de un archivo. El valor por defecto es el espacio.
  • -f [nombre de fichero]: especifica el archivo en el que se debe ejecutar el comando awk.
  • -v: se utiliza para añadir una variable.

Ejemplo del comando awk

Te vamos a poner un ejemplo sencillo para que veas cómo se utiliza el comando awk y cómo funciona. Para ello, vamos a utilizar un archivo llamado ejemplo.txt, que contiene tres columnas con una lista de ciudades, países y continentes. El archivo tiene el siguiente aspecto:

Ciudad País Continente
Berlín Alemania Europa
París Francia Europa
Hanoi Vietnam Asia
Abuja Nigeria África
shell

Utiliza el siguiente comando para mostrar el archivo completo:

$ awk "{print $0}" ejemplo.txt
shell

La cosa se pone más interesante si solo quieres mostrar determinadas columnas. En el ejemplo a continuación mostramos la primera y tercera columna:

$ awk "{print $1, $3}" ejemplo.txt
shell

El resultado que se obtiene es el siguiente:

Berlín Europa
París Europa
Hanoi Asia
Abuja África
shell