El comando sed
en Linux es una herramienta muy potente utilizada principalmente para procesar texto. Su nombre proviene de «stream editor», lo que significa editor de flujo. Aquí te dejo algunas de sus funciones principales:
- Reemplazo de texto: Puedes usar
sed
para buscar un patrón de texto específico y reemplazarlo con otro. Esto es útil para modificar archivos de configuración o datos. - Filtrado de contenido: Puede eliminar líneas específicas de un archivo o mostrar solo las que cumplen con un patrón determinado.
- Edición en línea: Con la opción
-i
, puedes editar archivos directamente sin necesidad de crear uno nuevo. - Scripts de edición: Puedes escribir scripts más largos de
sed
para realizar múltiples tareas de edición en un flujo de texto.
Es una herramienta extremadamente flexible y poderosa para manipular texto en scripts de shell, programas de automatización, y más.
Aquí tienes una mini guía para el uso de sed
en Linux, enfocándonos en el reemplazo de texto y el filtrado de contenido:
Reemplazo de Texto con sed
Para reemplazar texto, el formato básico del comando es:
sed 's/patrón_a_buscar/reemplazo/' archivo.txt
Ejemplo:
Supongamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Hola mundo
Hola universo
Adiós mundo
Y quieres reemplazar «mundo» por «planeta». Ejecutarías:
sed 's/mundo/planeta/' ejemplo.txt
Esto imprimirá en la consola el texto con los reemplazos, pero no modificará el archivo original. Si quieres cambiar el archivo original, usarías la opción -i
:
sed -i 's/mundo/planeta/' ejemplo.txt
Filtrado de Contenido con sed
Para filtrar contenido, puedes usar expresiones que coincidan con las líneas que quieres eliminar o mostrar.
Eliminar líneas:
Para eliminar líneas que coincidan con un patrón, usas:
sed '/patrón_a_eliminar/d' archivo.txt
Ejemplo:
Si deseas eliminar todas las líneas que contienen «Hola» del mismo archivo ejemplo.txt
, ejecutarías:
sed '/Hola/d' ejemplo.txt
Mostrar solo líneas específicas:
Para esto, sed
no es la herramienta más eficiente, pero puedes combinarlo con grep
:
grep 'patrón_a_mostrar' archivo.txt
Ejemplo:
Para mostrar solo las líneas que contienen «Adiós»:
grep 'Adiós' ejemplo.txt
Consejos adicionales:
- Usa
sed -i.bak 's/patrón/reemplazo/' archivo.txt
para guardar una copia del archivo original con la extensión.bak
antes de modificarlo. - Para patrones más complejos, necesitarás aprender sobre expresiones regulares (regex), que son las que utiliza
sed
para identificar los patrones de texto.
Espero que esta mini guía te sea útil para empezar a trabajar con sed
.
Si quieres una mini-guía de expresiones regulares para búsqueda de cadenas/string en texto tienes este post : Mini Guía Expresiones regulares