Comando AWK en Linux con ejemplos
Si está trabajando con Linux, es posible que se haya encontrado con el comando AWK. AWK es una poderosa herramienta de procesamiento de texto que se utiliza para una variedad de tareas como filtrar, manipular y transformar datos. En este artículo, exploraremos el comando AWK en detalle, incluida su sintaxis, funciones y ejemplos de su uso.
¿Qué es el comando AWK en Linux?
AWK es un lenguaje de programación y una herramienta que se utiliza para el procesamiento de texto y la manipulación de datos. Normalmente se utiliza para extraer y manipular datos de archivos de texto, pero también se puede utilizar para tareas más complejas como generar informes, analizar datos y más. AWK está disponible en casi todos los sistemas basados en Unix y, a menudo, se utiliza junto con otras herramientas de línea de comandos como sed y grep.
Sintaxis del comando AWK
El comando AWK tiene una sintaxis simple que consta de una serie de patrones y acciones. Los patrones se utilizan para hacer coincidir líneas de entrada específicas, mientras que las acciones se utilizan para especificar qué se debe hacer con esas líneas. Aquí hay un ejemplo de sintaxis básica del comando AWK:
awk 'pattern { action }' input_file
El patrón está entre comillas simples y especifica qué líneas del archivo de entrada deben procesarse. La acción está encerrada entre llaves y especifica qué se debe hacer con esas líneas. Se pueden combinar múltiples patrones y acciones para crear scripts más complejos.
Funciones del comando AWK
AWK tiene una variedad de funciones integradas que se pueden utilizar para manipular y procesar datos. Estas son algunas de las funciones más utilizadas:
-
imprimir : esta función se utiliza para imprimir texto en la consola o en un archivo.
printf: esta función se utiliza para formatear el texto e imprimirlo en la consola o en un archivo.
longitud : esta función se utiliza para determinar la longitud de una cadena.
substr: esta función se utiliza para extraer una subcadena de una cadena.
dividir: esta función se utiliza para dividir una cadena en una matriz según un delimitador especificado.
getline: esta función se utiliza para leer la siguiente línea de entrada.
Ejemplos de comandos AWK
Ahora que entendemos la sintaxis y las funciones básicas del comando AWK, veamos algunos ejemplos de cómo se puede utilizar.
Ejemplo 1: imprimir el contenido de un archivo
El uso más sencillo del comando AWK es imprimir el contenido de un archivo en la consola. Aquí se explica cómo hacerlo:
awk '{ print }' input_file
Este script coincidirá con cada línea del archivo de entrada y lo imprimirá en la consola.
Ejemplo 2: imprimir columnas específicas de un archivo
Uno de los usos más comunes de AWK es extraer columnas específicas de un archivo. A continuación se explica cómo extraer la primera y tercera columnas de un archivo:
awk '{ print $1, $3 }' input_file
Este script coincidirá con cada línea del archivo de entrada e imprimirá la primera y tercera columnas en la consola.
Ejemplo 3: Filtrar líneas según una condición
AWK también se puede utilizar para filtrar líneas según una condición. A continuación se explica cómo imprimir todas las líneas de un archivo que contienen la palabra "error":
awk '/error/ { print }' input_file
Este script coincidirá con cada línea del archivo de entrada que contenga la palabra "error" y lo imprimirá en la consola.
Ejemplo 4: suma de valores en una columna
AWK también se puede utilizar para realizar operaciones matemáticas con datos. A continuación se explica cómo sumar valores en la segunda columna de un archivo:
awk '{ sum += $2 } END { print sum }' input_file
Este script sumará todos los valores en la segunda columna del archivo de entrada e imprimirá el total en la consola.
Ejemplo 5: extraer subcadena de una columna
Otra tarea común es extraer una subcadena de una columna de un archivo. A continuación se explica cómo extraer los primeros tres caracteres de la primera columna de un archivo:
awk '{ print substr($1, 1, 3) }' input_file
Este script extraerá los primeros tres caracteres de la primera columna del archivo de entrada y los imprimirá en la consola.
Ejemplo 6: unir dos archivos según una columna común
AWK también se puede utilizar para unir dos archivos basándose en una columna común. A continuación se explica cómo unir dos archivos según el valor de la primera columna:
awk 'NR==FNR{a[$1]=$2;next}{ print $0, a[$1] }' file1 file2
Este script leerá el primer archivo en la memoria y creará una matriz con valores en la segunda columna. Luego leerá el segundo archivo e imprimirá cada línea, seguida del valor correspondiente del primer archivo.
Ejemplo 7: extraer la primera columna de un archivo
Para extraer la primera columna de un archivo usando el comando AWK, use la siguiente sintaxis:
$ awk '{ print $1 }' filename
Aquí, $1 se refiere a la primera columna del archivo de entrada. El comando de impresión se utiliza para mostrar la salida.
Ejemplo 8: Calcular el promedio de una columna
Para calcular el promedio de una columna usando el comando AWK, use la siguiente sintaxis:
$ awk '{ sum += $1 } END { print sum / NR }' filename
Aquí, suma es una variable que almacena la suma de valores en la primera columna. NR es una variable incorporada que almacena la cantidad de registros (líneas) procesados por el comando AWK. El patrón FIN coincide con el final del archivo de entrada.
Ejemplo 9: reemplazar una cadena en un archivo
Para reemplazar una cadena en un archivo usando el comando AWK, use la siguiente sintaxis:
$ awk '{ gsub("oldstring", "newstring") } 1' filename
Aquí, gsub es una función que reemplaza todas las apariciones de cadena antigua con cadena nueva. 1 patrón coincide con todas las líneas del archivo de entrada.
Ejemplo 10: Mostrar el último campo de un archivo
Para mostrar el último campo de un archivo usando el comando AWK, use la siguiente sintaxis:
$ awk '{ print $NF }' filename
Aquí, $NF se refiere al último campo del archivo de entrada. El comando de impresión se utiliza para mostrar la salida.
Ejemplo 11: uso de expresiones regulares
Las expresiones regulares son una característica poderosa del comando AWK que permite a los usuarios buscar patrones en los datos. Aquí hay un ejemplo que demuestra el uso de expresiones regulares:
$ awk '/pattern/ { print }' filename
Aquí, /pattern/ es una expresión regular que coincide con cualquier línea que contenga un patrón.
Ejemplo 12: uso de variables
Las variables se pueden usar en el comando AWK para almacenar valores que se pueden usar en acciones. Aquí hay un ejemplo que demuestra el uso de variables:
$ awk '{ total += $1 } END { print "Total: ", total }' filename
Aquí, el total variable se utiliza para almacenar la suma de los valores en la primera columna.
Ejemplo 13: uso de variables integradas
El comando AWK tiene varias variables integradas que se pueden utilizar para realizar diversas tareas. Aquí hay algunos ejemplos:
FS: la variable separadora de campos se utiliza para especificar el delimitador utilizado para separar campos en el archivo de entrada. De forma predeterminada, está configurado en espacios en blanco.
RS: la variable separadora de registros se utiliza para especificar el delimitador utilizado para separar registros en el archivo de entrada. De forma predeterminada, está configurado con un carácter de nueva línea.
OFS: la variable separadora de campos de salida se utiliza para especificar el delimitador utilizado para separar campos en la salida. De forma predeterminada, está configurado en espacios en blanco.
ORS: la variable separadora de registros de salida se utiliza para especificar el delimitador utilizado para separar registros en la salida. De forma predeterminada, está configurado con un carácter de nueva línea.
Ejemplo 14: uso de declaraciones de control
Las declaraciones de control como los bucles if-else y while se pueden utilizar en el comando AWK para realizar operaciones condicionales. Aquí hay un ejemplo que demuestra el uso de declaraciones if-else:
$ awk '{ if ($1 > 50) { print "Pass" } else { print "Fail" } }' filename
Aquí, si el valor en la primera columna es mayor que 50, el resultado será "Aprobado", de lo contrario será "Reprobado".
Ejemplo 15: uso de funciones
Las funciones se pueden definir y utilizar en el comando AWK para realizar operaciones complejas. Aquí hay un ejemplo que demuestra el uso de funciones:
$ awk 'function square(x) { return x*x } { print square($1) }' filename
Aquí, la función cuadrado se define y se utiliza para calcular el cuadrado del valor en la primera columna.
Conclusión
El comando AWK es una poderosa herramienta para el procesamiento de texto y manipulación de datos en Linux. Con su sintaxis simple, funciones integradas y capacidad para realizar tareas complejas, AWK es una herramienta esencial para cualquier usuario de Linux. Al utilizar los ejemplos de este artículo, debería poder comenzar con AWK y comenzar a desbloquear todo su potencial.