Cómo usar el comando awk en Linux

En Linux, awk es un dínamo de manipulación de texto de línea de comandos, así como un poderoso lenguaje de programación. Aquí hay una introducción a algunas de sus características más interesantes.

Cómo awk obtuvo su nombre

El comando awk fue nombrado usando las iniciales de las tres personas que escribieron la versión original en 1977: Alfred Aho, Peter Weinbergery Brian Kernighan. Estos tres hombres eran del legendario AT&T Laboratorios Bell Panteón Unix. Con las contribuciones de muchos otros desde entonces, awk ha seguido evolucionando.

Es un lenguaje de programación completo, así como un conjunto de herramientas de manipulación de texto completo para la línea de comandos. Si este artículo le abre el apetito, puede mira cada detalle sobre awk y su funcionalidad.

Reglas, patrones y acciones

awk funciona en programas que contienen reglas compuestas por patrones y acciones. La acción se ejecuta en el texto que coincide con el patrón. Los patrones se encierran entre llaves ({}). Juntos, un patrón y una acción forman una regla. Todo el programa awk está entre comillas simples (‘).

  Cómo cambiar entre altavoces y auriculares para juegos USB en Linux

Echemos un vistazo al tipo más simple de programa awk. No tiene patrón, por lo que coincide con todas las líneas de texto introducidas en él. Esto significa que la acción se ejecuta en cada línea. Bien úselo en la salida de el que manda.

Aquí está la salida estándar de quién:

who

los

Quizás no necesitemos toda esa información, sino más bien, solo queremos ver los nombres en las cuentas. Podemos canalizar la salida de who a awk, y luego decirle a awk que imprima solo el primer campo.

De forma predeterminada, awk considera que un campo es una cadena de caracteres rodeada por espacios en blanco, el comienzo de una línea o el final de una línea. Los campos se identifican con un signo de dólar ($) y un número. Entonces, $ 1 representa el primer campo, que usaremos con la acción de imprimir para imprimir el primer campo.

  Cómo hacer que TiddlyWiki funcione en Linux

Escribimos lo siguiente:

who | awk '{print $1}'

los

awk imprime el primer campo y descarta el resto de la línea.

Podemos imprimir tantos campos como queramos. Si agregamos una coma como separador, awk imprime un espacio entre cada campo.

Escribimos lo siguiente para imprimir también la hora en que la persona inició sesión (campo cuatro):

who | awk '{print $1,$4}'

los

Hay un par de identificadores de campo especiales. Estos representan la línea completa de texto y el último campo en la línea de texto:

$ 0: representa la línea completa de texto.
$ 1: representa el primer campo.
$ 2: representa el segundo campo.
$ 7: representa el séptimo campo.
$ 45: representa el campo 45.
$ NF: Significa «número de campos» y representa el último campo.

  Cómo usar VLC con Chromecast en Linux

Escribiremos lo siguiente para que aparezca un pequeño archivo de texto que contiene una breve cita atribuida a Dennis Ritchie:

cat dennis_ritchie.txt

los

Queremos que awk imprima el primer, segundo y último campo de la cita. Tenga en cuenta que, aunque está envuelto en la ventana de la terminal, es solo una línea de texto.

Escribimos el siguiente comando:

awk '{print $1,$2,$NF}' dennis_ritchie.txt

los

No conocemos esa «simplicidad». es el campo número 18 en la línea de texto, y no nos importa. Lo que sí sabemos es que es el último campo y podemos usar $ NF para obtener su valor. El período se considera simplemente otro carácter en el