0Pricing
Linux Command Line & Bash Scripting Mastery · Lección

Manipulación avanzada de texto (sed, awk)

Explore «sed» para editar flujos de texto y «awk» para procesar texto, buscar patrones y extraer datos de forma avanzada.

Manipulación avanzada de texto (sed, awk) es una lección gratuita de Linux Command Line & Bash Scripting Mastery en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Linux Command Line & Bash Scripting Mastery, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

Editar flujos con sed

sed, abreviatura de «stream editor», es una potente utilidad de línea de comandos para analizar y transformar texto. Procesa los flujos de texto línea por línea. Puede considerarlo un editor de texto no interactivo.

sed lee una línea, aplica un comando (como una sustitución o eliminación), imprime el resultado y pasa a la línea siguiente. Esto lo hace muy eficaz para archivos grandes o datos recibidos mediante tuberías.

Sustitución de texto sencilla

El uso más habitual de sed es sustituir texto. Utilizamos el comando s, seguido de un delimitador (a menudo /), el patrón que se desea buscar, otro delimitador, el texto de reemplazo y un delimitador final.

Sintaxis: sed 's/pattern/replacement/' filename

Pruebe a reemplazar «apple» por «orange» en un archivo de ejemplo:

#!/bin/bash
# Create a sample file
echo "I like red apple." > fruits.txt
echo "My favorite fruit is apple." >> fruits.txt
echo "Another apple here." >> fruits.txt

echo "Original content:"
cat fruits.txt
echo ""

echo "---"
echo "Running sed command:"
sed 's/apple/orange/' fruits.txt
# Clean up
rm fruits.txt

Global y sin distinción entre mayúsculas y minúsculas

De forma predeterminada, sed solo reemplaza la primera aparición de un patrón en cada línea. Para reemplazar todas las apariciones de una línea, use la bandera g (global).

Para realizar una búsqueda sin distinguir entre mayúsculas y minúsculas, use la bandera i. Puede combinar banderas, como gi.

Ejemplo: reemplace todas las apariciones de "apple" (sin distinguir entre mayúsculas y minúsculas) por "banana".

#!/bin/bash
# Create a sample file
echo "Apple is good." > fruits.txt
echo "I eat an apple and another Apple." >> fruits.txt
echo "Apples are tasty." >> fruits.txt

echo "Original content:"
cat fruits.txt
echo ""

echo "---"
echo "Running sed command (s/apple/banana/gi):"
sed 's/apple/banana/gi' fruits.txt
# Clean up
rm fruits.txt

Eliminar líneas con sed

También puede usar sed para eliminar líneas completas que coincidan con un patrón específico. Para ello se usa el comando d.

Sintaxis: sed '/pattern/d' filename

Esto resulta útil para eliminar líneas no deseadas, como entradas de registro que contienen "DEBUG" o líneas vacías.

Eliminemos las líneas que contienen "error":

#!/bin/bash
# Create a sample file
echo "INFO: User logged in." > log.txt
echo "WARNING: Disk space low." >> log.txt
echo "ERROR: File not found." >> log.txt
echo "INFO: Operation complete." >> log.txt
echo "ERROR: Permission denied." >> log.txt

echo "Original content:"
cat log.txt
echo ""

echo "---"
echo "Running sed command (/error/d):"
sed '/error/d' log.txt
# Clean up
rm log.txt

awk: lenguaje de análisis de patrones

awk es otra potente herramienta de procesamiento de texto, que se usa a menudo para extraer datos y generar informes. Mientras que sed es un editor de flujo, awk se parece más a un lenguaje de programación diseñado para trabajar con texto.

awk procesa los archivos de texto línea por línea, al igual que sed. Sin embargo, trata cada línea como un "registro" y divide los registros en "campos" (columnas) según un separador.

De forma predeterminada, awk usa los espacios en blanco (espacios y tabulaciones) como separador de campos.

Acceder a los campos de datos

En awk, los campos se identifican mediante $1, $2, $3, etc. $0 representa la línea completa.

Puede imprimir campos específicos mediante el comando print dentro de llaves {}. La sintaxis es: awk '{ print $FIELD_NUMBER }' filename

Imprimamos el primer y el tercer campo de un archivo de datos sencillo:

#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt

echo "Original content:"
cat data.txt
echo ""

echo "---"
echo "Running awk command (print $1, $3):"
awk '{print $1, $3}' data.txt
# Clean up
rm data.txt

Filtrar líneas con awk

Al igual que sed, awk también puede filtrar líneas según patrones. Debe especificar un patrón antes del bloque de acciones. La acción solo se ejecutará en las líneas que coincidan con el patrón.

Sintaxis: awk '/pattern/ { action }' filename

Busquemos e imprimamos únicamente los nombres de las personas de "London":

#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "David 28 London" >> data.txt

echo "Original content:"
cat data.txt
echo ""

echo "---"
echo "Running awk command (/London/ {print $1}):"
awk '/London/ {print $1}' data.txt
# Clean up
rm data.txt

Inicializar y finalizar con awk

awk permite especificar acciones que se ejecutarán antes de procesar cualquier línea (bloque BEGIN) y después de procesar todas las líneas (bloque END).

Los bloques BEGIN son ideales para imprimir encabezados o inicializar variables. Los bloques END son perfectos para imprimir resúmenes, totales o pies de página.

Añadamos un encabezado y un pie de página a nuestra salida:

#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt

echo "Original content:"
cat data.txt
echo ""

echo "---"
echo "Running awk command (BEGIN/END):"
awk 'BEGIN { print "--- User Data ---" } { print $1, $2 } END { print "--- End Report ---" }' data.txt
# Clean up
rm data.txt

Lógica condicional en awk

Puede usar sentencias if dentro de los bloques de acciones de awk para aplicar lógica según los valores de los campos u otras condiciones. Esto hace que awk sea muy potente para filtrar y transformar datos complejos.

Sintaxis: awk '{ if (condition) { action } }' filename

Imprimamos únicamente los usuarios mayores de 25 años:

#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Diana 27 Berlin" >> data.txt

echo "Original content:"
cat data.txt
echo ""

echo "---"
echo "Running awk command (if $2 > 25):"
awk '{ if ($2 > 25) { print $1, $2 } }' data.txt
# Clean up
rm data.txt

Comprobación rápida: sed y awk

Considere el siguiente contenido en un archivo llamado names.txt:

John Doe,30,New York
Jane Smith,25,London
Peter Jones,40,Paris

¿Cuál de los siguientes comandos mostraría únicamente los nombres (el primer campo) de las personas mayores de 30 años?

Repaso: la potencia de sed y awk

¡Ya ha explorado la potencia de sed para editar flujos y de awk para procesar texto de forma avanzada!

  • sed es perfecto para realizar sustituciones, eliminaciones y transformaciones sencillas línea por línea.
  • awk destaca al analizar texto estructurado, trabajar con campos y aplicar lógica condicional para extraer datos y generar informes.

Estas herramientas son indispensables para crear scripts, analizar registros y manipular datos en el entorno Linux.

Preguntas frecuentes

¿La lección «Manipulación avanzada de texto (sed, awk)» es gratis?

Sí — el texto completo de «Manipulación avanzada de texto (sed, awk)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Linux Command Line & Bash Scripting Mastery, actualiza a CoddyKit PRO. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

¿Qué aprenderé en «Manipulación avanzada de texto (sed, awk)»?

Explore «sed» para editar flujos de texto y «awk» para procesar texto, buscar patrones y extraer datos de forma avanzada. Practicas Linux Command Line & Bash Scripting Mastery con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Linux Command Line & Bash Scripting Mastery?

No se requiere experiencia previa. Linux Command Line & Bash Scripting Mastery en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Manipulación avanzada de texto (sed, awk)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Linux Command Line & Bash Scripting Mastery?

Sí. Cada lección de Linux Command Line & Bash Scripting Mastery incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Manipulación avanzada de texto (sed, awk)
  2. Archivado y compresión (tar, gzip, unzip)
  3. Uso del disco e información del sistema (df, du, uname)
  4. Ordenación y eliminación de duplicados (sort, uniq, cut)
← Volver a Linux Command Line & Bash Scripting Mastery