El poder de ‘sed’ y ‘awk’ en Linux, un pequeño acercamiento a estas poderosas herramientas.

En el mundo de Linux y la línea de comandos, sed y awk son dos herramientas extremadamente potentes para el procesamiento de texto, cada una con sus propias características y usos especializados:

Sed

  • Nombre Completo: Stream Editor (Editor de Flujo).
  • Propósito: sed es una herramienta utilizada principalmente para transformar o manipular texto en un flujo de datos. Se usa para realizar operaciones básicas de edición de texto directamente desde la línea de comandos o en scripts de shell.
  • Características Clave:
  • Edición de Texto: Puede realizar operaciones como inserción, borrado, búsqueda y reemplazo de texto.
  • Scriptable: Puede usarse dentro de scripts para automatizar la edición.
  • Expresiones Regulares: Utiliza expresiones regulares, lo que permite realizar modificaciones complejas y específicas.
  • Funciona con Flujos: Puede procesar texto en «streaming», es decir, trabajar con datos que están siendo transmitidos, sin necesidad de abrir el archivo completo.

Awk

  • Nombre Completo: AWK es un acrónimo derivado de los apellidos de sus creadores: Aho, Weinberger y Kernighan.
  • Propósito: awk es un lenguaje de programación diseñado para el procesamiento de texto y análisis de datos. Se utiliza para manipular archivos de datos y generar informes.
  • Características Clave:
  • Procesamiento de Campos y Registros: Excelente para trabajar con datos estructurados (como tablas) y puede manipular fácilmente campos y registros individuales.
  • Lenguaje de Programación: Incluye variables, operadores lógicos, loops y otras características de un lenguaje de programación.
  • Patrones y Acciones: Permite especificar patrones para buscar en los datos y acciones para realizar cuando esos patrones son encontrados.
  • Análisis de Datos: Puede sumarizar, agrupar y transformar datos de formas complejas.

Ambas herramientas son estándares en la mayoría de las distribuciones de Unix y Linux y se utilizan ampliamente tanto en tareas de administración del sistema como en procesamiento de datos. Aunque pueden parecer intimidantes al principio debido a su sintaxis y la riqueza de sus capacidades, sed y awk son herramientas increíblemente útiles y poderosas una vez que se aprende a utilizarlas.

Ejemplos prácticos de cómo usar sed y awk en la consola de Linux para resolver problemas comunes.

Uso de sed

  1. Reemplazar texto en un archivo
   sed 's/original/nuevo/g' archivo.txt

Esto reemplaza todas las ocurrencias de «original» por «nuevo» en archivo.txt.

  1. Eliminar líneas que contienen una palabra específica
   sed '/palabra/d' archivo.txt

Elimina todas las líneas que contienen «palabra» en archivo.txt.

  1. Insertar texto después de una línea específica
   sed '3a\Texto a insertar' archivo.txt

Inserta «Texto a insertar» después de la línea 3 en archivo.txt.

  1. Eliminar una línea específica
   sed '5d' archivo.txt

Elimina la línea 5 de archivo.txt.

Uso de awk

  1. Imprimir una columna específica de un archivo
   awk '{print $2}' archivo.txt

Imprime la segunda columna de archivo.txt.

  1. Sumar valores de una columna
   awk '{suma += $3} END {print suma}' archivo.txt

Suma todos los valores de la tercera columna en archivo.txt.

  1. Filtrar líneas basadas en un patrón
   awk '/patrón/ {print $0}' archivo.txt

Imprime las líneas de archivo.txt que contienen «patrón».

  1. Modificar el separador de campos
   awk -F, '{print $2}' archivo.csv

Imprime la segunda columna de un archivo CSV (donde el separador es una coma).

Estos ejemplos son básicos y el uso de sed y awk puede ser mucho más complejo y potente dependiendo de tus necesidades específicas. Estas herramientas son muy versátiles y pueden ser usadas para una gran variedad de tareas de procesamiento de texto en la consola de Linux.

Aquí te presento algunos trucos útiles que pueden facilitarte la vida:

Trucos con sed

  1. Convertir un archivo de Windows (CRLF) a Unix (LF)
   sed 's/\r$//' archivo_windows.txt > archivo_unix.txt
  1. Duplicar líneas que contienen una palabra específica
   sed '/palabra/ p' archivo.txt
  1. Eliminar las líneas vacías o que contienen solo espacios
   sed '/^ *$/d' archivo.txt
  1. Reemplazar la n-ésima ocurrencia de una cadena en cada línea
   sed 's/palabra/nueva_palabra/3' archivo.txt

Reemplaza la tercera ocurrencia de «palabra» por «nueva_palabra» en cada línea.

  1. Añadir una línea al principio y al final de un archivo
   sed -e '1i\Primera línea' -e '$a\Última línea' archivo.txt

Trucos con awk

  1. Imprimir líneas cuyo campo n cumple una condición
   awk '$2 == "valor"' archivo.txt

Imprime líneas donde el segundo campo es igual a «valor».

  1. Calcular la media de un campo
   awk '{ total += $3; count++ } END { print total/count }' archivo.txt

Calcula la media de los valores en la tercera columna.

  1. Combinar dos archivos basados en un campo común
   awk 'NR==FNR{a[$1]=$0; next} $1 in a' archivo1.txt archivo2.txt
  1. Imprimir líneas de un archivo que no están en otro
   awk 'NR==FNR{a[$0];next} !($0 in a)' archivo1.txt archivo2.txt
  1. Agregar un encabezado a un archivo CSV
   awk 'BEGIN {print "Encabezado1,Encabezado2,Encabezado3"} {print}' archivo.csv

Estos trucos pueden ser adaptados y combinados para satisfacer una amplia variedad de necesidades en el procesamiento de archivos de texto. La clave está en experimentar y familiarizarse con la sintaxis y las opciones que ofrecen sed y awk.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.