Cómo usar el comando Sed en Linux para actualizar archivos
El comando sed (Stream Editor) en Linux es una herramienta poderosa utilizada para el procesamiento de texto y la modificación de archivos. Permite a los usuarios buscar, reemplazar, insertar y eliminar texto en archivos de manera eficiente, lo que lo convierte en un comando vital para la automatización y la creación de scripts. En esta guía, exploraremos cómo usar el comando sed para actualizar archivos en Linux con ejemplos prácticos.
El comando sed se usa ampliamente para:
Reemplazo de texto – Reemplaza fácilmente palabras, frases o patrones en archivos.
Procesamiento por lotes – Modifica varios archivos a la vez usando scripts.
Eficiencia – Procesa archivos grandes rápidamente sin abrirlos.
Edición en línea – Modifica archivos directamente desde la línea de comandos.
Automatización – Se usa en scripts para manejar modificaciones repetitivas de texto.
La sintaxis general del comando sed es:
sed [OPTIONS] 's/old-text/new-text/g' filename
Donde:
- s – Significa sustitución.
- old-text – El texto que se reemplazará.
- new-text – El texto de reemplazo.
- g – (Global) Garantiza que se reemplacen todas las apariciones en la línea.
- filename – El archivo que se modificará.
Cómo usar el comando Sed para actualizar archivos
1. Reemplazar una palabra en un archivo
Para reemplazar una palabra específica en un archivo, usa:
sed 's/Linux/Ubuntu/g' file.txt
Esto reemplaza la primera aparición de «Linux» con «Ubuntu» en cada línea de file.txt.
2. Reemplazar todas las apariciones en un archivo
Para reemplazar todas las apariciones de una palabra globalmente en un archivo:
sed 's/Linux/Ubuntu/g' file.txt
La bandera g garantiza que cada aparición en una línea sea reemplazada.
3. Editar un archivo en su lugar (modificar el archivo directamente)
Para realizar cambios directamente en el archivo sin mostrar la salida:
sed -i 's/Linux/Ubuntu/g' file.txt
La opción -i permite la edición en el lugar, lo que significa que el archivo original se modifica sin necesidad de guardar una versión separada.
4. Reemplazar texto solo en líneas específicas
Para modificar solo líneas específicas en un archivo, especifica el número de línea:
sed '3s/Linux/Ubuntu/' file.txt
Este comando reemplaza «Linux» con «Ubuntu» solo en la línea 3.
5. Eliminar una línea que contenga texto específico
Para eliminar todas las líneas que contengan una palabra específica, usa:
sed '/unwanted-text/d' file.txt
Esto elimina todas las líneas que contienen «unwanted-text».
6. Eliminar una línea específica por número
Para eliminar una línea específica, usa:
sed '5d' file.txt
Esto elimina la línea 5 de file.txt.
7. Insertar texto antes de una línea
Para agregar una línea antes de un número de línea específico:
sed '3iThis is a new line' file.txt
Esto inserta «This is a new line» antes de la línea 3.
8. Insertar texto después de una línea
Para insertar una línea después de un número de línea específico:
sed '3aThis is an appended line' file.txt
Esto añade «This is an appended line» después de la línea 3.
9. Reemplazar una palabra en varios archivos
Para reemplazar texto en varios archivos a la vez:
sed -i 's/Linux/Ubuntu/g' *.txt
Este comando modifica todos los archivos .txt en el directorio, reemplazando «Linux» con «Ubuntu».
Comandos avanzados de Sed
1. Usar varios comandos Sed juntos
Para realizar varias modificaciones a la vez:
sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt
Esto reemplaza «Linux» con «Ubuntu» y «Server» con «Cloud» en file.txt.
2. Usar Sed con expresiones regulares
Para reemplazar números en un archivo:
sed 's/[0-9]/#/g' file.txt
Esto reemplaza todos los dígitos con #.
3. Extraer líneas específicas de un archivo
Para extraer y mostrar líneas de 5 a 10:
sed -n '5,10p' file.txt
La opción -n evita imprimir todo el archivo, mostrando solo las líneas 5-10.
Mejores prácticas para usar Sed
- Haz siempre una copia de seguridad de los archivos antes de usar -i – Evita la pérdida accidental de datos.
- Usa expresiones regulares – Potente coincidencia de patrones para modificaciones complejas.
- Prueba los comandos antes de aplicar cambios – Ejecuta sed sin -i para previsualizar la salida.
- Usa scripts para la automatización – Combina sed con scripting de shell para el procesamiento por lotes.
Conclusión
El comando sed es una herramienta versátil y eficiente para actualizar archivos en Linux. Ya sea que necesites reemplazar texto, eliminar líneas o insertar contenido, sed puede automatizar y simplificar estas tareas. Al dominar sed, puedes mejorar tu flujo de trabajo y aumentar la productividad en la administración y el scripting de Linux.


