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 desed.comando: Define qué operación realizarásedsobre el texto.archivo(s): Los archivos de entrada sobre los cualessedoperará. Si no se especifica un archivo,sedleerá 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 (normalmentesedescribe 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 scriptssed.
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.txtEl 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.txtAquí 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.txtLa 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.txtEste 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.
Comentarios