Introducción

awk es una poderosa herramienta de procesamiento de texto que se utiliza para manipular y analizar archivos de texto. Es especialmente útil para trabajar con datos estructurados en columnas, como archivos CSV o registros de logs. En este tema, aprenderás los conceptos básicos de awk, cómo usarlo para filtrar y transformar datos, y cómo escribir scripts awk más complejos.

Conceptos Básicos de awk

Sintaxis Básica

La sintaxis básica de awk es la siguiente:

awk 'pattern { action }' file
  • pattern: Un patrón que awk busca en cada línea del archivo.
  • action: Una acción que awk realiza en las líneas que coinciden con el patrón.

Ejemplo Simple

Supongamos que tienes un archivo llamado data.txt con el siguiente contenido:

John Doe 30
Jane Smith 25
Alice Johnson 28

Para imprimir todas las líneas del archivo, puedes usar:

awk '{ print }' data.txt

Campos y Registros

En awk, cada línea de un archivo se llama "registro" y cada palabra en una línea se llama "campo". Los campos se referencian usando $1, $2, $3, etc.

Por ejemplo, para imprimir solo el primer y el tercer campo de cada línea:

awk '{ print $1, $3 }' data.txt

Filtrado de Datos

Usando Patrones

Puedes usar patrones para filtrar líneas específicas. Por ejemplo, para imprimir solo las líneas que contienen el nombre "John":

awk '/John/ { print }' data.txt

Condiciones

También puedes usar condiciones más complejas. Por ejemplo, para imprimir solo las líneas donde el tercer campo (edad) es mayor que 25:

awk '$3 > 25 { print }' data.txt

Transformación de Datos

Modificación de Campos

Puedes modificar los campos antes de imprimirlos. Por ejemplo, para incrementar la edad en 1 año:

awk '{ $3 = $3 + 1; print }' data.txt

Formateo de Salida

Puedes usar printf para formatear la salida. Por ejemplo, para alinear los campos en columnas:

awk '{ printf "%-10s %-10s %d\n", $1, $2, $3 }' data.txt

Scripts awk

Guardar un Script en un Archivo

Puedes guardar un script awk en un archivo y ejecutarlo. Por ejemplo, guarda el siguiente script en un archivo llamado script.awk:

{
    if ($3 > 25) {
        printf "%-10s %-10s %d\n", $1, $2, $3
    }
}

Luego, ejecuta el script con:

awk -f script.awk data.txt

Variables y Funciones

awk soporta variables y funciones. Por ejemplo, para calcular la suma de todas las edades:

BEGIN { sum = 0 }
{
    sum += $3
}
END { print "Total Age:", sum }

Ejecuta el script con:

awk -f script.awk data.txt

Ejercicios Prácticos

Ejercicio 1: Filtrar y Formatear Datos

Dado un archivo employees.txt con el siguiente contenido:

ID  Name        Department  Salary
1   John Doe    Sales       50000
2   Jane Smith  Marketing   60000
3   Alice Johnson HR        55000
4   Bob Brown   Sales       45000
  1. Escribe un comando awk para imprimir solo los nombres y salarios de los empleados en el departamento de "Sales".
  2. Escribe un comando awk para imprimir todas las líneas con los salarios mayores a 50000, formateados en columnas.

Soluciones

  1. Filtrar por departamento "Sales":
awk '$3 == "Sales" { print $2, $4 }' employees.txt
  1. Filtrar por salario mayor a 50000 y formatear:
awk '$4 > 50000 { printf "%-10s %-10s %-10s %d\n", $1, $2, $3, $4 }' employees.txt

Conclusión

En esta sección, has aprendido los conceptos básicos de awk, incluyendo cómo usarlo para filtrar y transformar datos. También has visto cómo escribir scripts awk más complejos y cómo ejecutar estos scripts desde archivos. Con esta base, estarás preparado para utilizar awk en tareas más avanzadas de procesamiento de texto y análisis de datos en Bash.

© Copyright 2024. Todos los derechos reservados