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.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies