sed es utilizado ampliamente para modificar y transformar texto en un flujo de datos, es decir, permite realizar complejas manipulaciones de texto de manera automática.


El comando sed (stream editor) es una de las herramientas más poderosas y versátiles en el arsenal de cualquier usuario de GNU/Linux. sed es utilizado ampliamente para modificar y transformar texto en un flujo de datos, es decir, permite realizar complejas manipulaciones de texto de manera automática. Es ideal para scripts de shell y para procesamiento de texto en pipelines.

Uso del comando

sed es principalmente utilizado para realizar transformaciones automáticas en archivos de texto. Puede ser usado para editar grandes cantidades de texto sin interacción manual, automatizar ediciones repetitivas, extraer contenido seleccionado de los flujos de texto, y mucho más. Debido a su capacidad de procesar flujos de datos, sed es especialmente útil en scripts y en procesamientos de texto en línea.

Sintaxis básica

La sintaxis general de sed es:

sed [opciones] 'comando' archivo(s)
  • opciones: Controlan el comportamiento general de sed.
  • comando: Define qué operación realizará sed sobre el texto.
  • archivo(s): Los archivos de entrada sobre los cuales sed operará. Si no se especifica un archivo, sed leerá del input estándar.

Opciones básicas del comando

sed ofrece varias opciones útiles:

  • -e script: Permite agregar múltiples comandos.
  • -n, --quiet, --silent: Suprime la salida automática (normalmente sed escribe cada línea de archivo a la salida).
  • -i, --in-place: Modifica los archivos directamente, sin necesidad de redireccionar la salida a un nuevo archivo.
  • -f archivo: Permite especificar un archivo que contiene scripts sed.

Algunos ejemplos interesantes

Aquí varios ejemplos para ilustrar cómo se puede utilizar sed para editar textos de manera eficiente:

Reemplazar texto de un fichero

Para reemplazar todas las instancias de "texto_antiguo" por "texto_nuevo" en un archivo llamado documento.txt:

$ sed -i 's/texto_antiguo/texto_nuevo/g' documento.txt

El uso de -i hace que el cambio sea in-situ, es decir, directamente en el archivo.

Eliminar líneas que contengan una cadena de texto

Si quieres eliminar todas las líneas que contienen la palabra "eliminar" de un archivo:

$ sed '/eliminar/d' archivo.txt

Aquí no usamos -i para que sed muestre el resultado en la pantalla en lugar de modificar el archivo.

Mostrar ciertas líneas que contengan una cadena de texto

Para imprimir solo las líneas que contienen "importante" en ellas:

$ sed -n '/importante/p' archivo.txt

La opción -n suprime la salida por defecto y el comando p imprime las líneas que cumplen con el patrón.

Aplicar múltiples comandos

Si necesitas realizar varias transformaciones en un archivo, puedes usar múltiples comandos -e:

$ sed -e 's/peras/manzanas/g' -e '/naranjas/d' archivo.txt

Este comando reemplazará "peras" por "manzanas" y eliminará las líneas que contienen "naranjas".

Conclusión

sed es una herramienta de edición de texto extremadamente poderosa que ofrece una flexibilidad y capacidad de automatización inigualables para el procesamiento de texto en GNU/Linux. Al familiarizarte con sed, podrás realizar tareas de edición de texto complicadas y repetitivas de manera eficiente y efectiva, maximizando así tu productividad en la línea de comandos.


¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación