El Comando sed de Linux: Cómo Se Utiliza y Ejemplos

Introducción

El comando sed, abreviatura de stream editor, es una herramienta poderosa en el mundo de Linux que permite realizar operaciones avanzadas de edición de texto directamente desde la línea de comandos. Aunque a menudo se subestima, sed es extremadamente útil para procesar flujos de texto de manera automatizada, lo que lo convierte en un componente esencial para la manipulación de datos en scripts y tareas de administración de sistemas.

1. ¿Qué es sed?

sed es un editor de flujo que lee texto desde la entrada estándar (como un archivo o un flujo de datos) y aplica una secuencia de comandos de edición a ese texto antes de escribirlo en la salida estándar. A diferencia de editores de texto interactivos como vim o nano, sed realiza sus ediciones de forma no interactiva, lo que significa que puede usarse dentro de scripts para automatizar la manipulación de archivos de texto.

2. Sintaxis Básica de sed

La sintaxis básica de sed es la siguiente:

sed [opciones] 'comando' archivo
  • opciones: Configura el comportamiento de sed.
  • comando: Especifica la operación que sed debe realizar.
  • archivo: El archivo de texto en el que se realizarán las operaciones.

Un ejemplo simple es usar sed para sustituir una palabra en un archivo de texto:

sed 's/viejo/nuevo/' archivo.txt

Este comando busca la palabra «viejo» en cada línea de archivo.txt y la reemplaza por «nuevo».

3. Operaciones Comunes con sed

a. Sustitución de Texto

La operación más común con sed es la sustitución, que se realiza utilizando el comando s. El formato general es:

sed 's/patrón/reemplazo/' archivo.txt

Por ejemplo, si deseas reemplazar todas las ocurrencias de «Linux» por «GNU/Linux» en un archivo, puedes ejecutar:

sed 's/Linux/GNU\/Linux/g' archivo.txt

Aquí, la opción g al final asegura que la sustitución se realice en todas las ocurrencias dentro de cada línea, no solo en la primera.

b. Eliminación de Líneas

sed también permite eliminar líneas de un archivo de texto. Por ejemplo, para eliminar la tercera línea de un archivo:

sed '3d' archivo.txt

Para eliminar un rango de líneas, por ejemplo, de la línea 2 a la 4:

sed '2,4d' archivo.txt
c. Inserción de Texto

Puedes insertar texto antes o después de una línea específica. Para insertar «Nuevo Texto» después de la segunda línea:

sed '2a Nuevo Texto' archivo.txt

Para insertar antes de una línea específica, se utiliza el comando i:

sed '2i Texto antes de la línea 2' archivo.txt
d. Sustitución con Expresiones Regulares

sed soporta el uso de expresiones regulares para realizar búsquedas y sustituciones más avanzadas. Por ejemplo, para eliminar todos los números de un archivo:

sed 's/[0-9]//g' archivo.txt

Esto elimina cualquier dígito del texto.

4. Uso Avanzado de sed

a. Edición en Línea

Para modificar el archivo directamente en lugar de solo mostrar el resultado en la salida estándar, puedes usar la opción -i:

sed -i 's/viejo/nuevo/' archivo.txt
b. Combinación de Comandos

Puedes combinar múltiples comandos en una sola llamada de sed. Por ejemplo, para sustituir texto y luego eliminar una línea:

sed -e 's/viejo/nuevo/' -e '3d' archivo.txt
c. Uso de Archivos de Comandos

Si tienes una serie de comandos sed que quieres aplicar, puedes guardarlos en un archivo y ejecutarlos todos a la vez:

sed -f comandos.sed archivo.txt

5. Ejemplos Prácticos

a. Contar el Número de Palabras en un Archivo

Aunque sed no cuenta directamente las palabras, puedes usarlo para convertir espacios en nuevas líneas y luego contar las líneas:

sed 's/ /\n/g' archivo.txt | wc -l
b. Agregar Números de Línea

Para agregar números de línea a un archivo:

sed = archivo.txt | sed 'N;s/\n/\t/'
c. Transformar Mayúsculas en Minúsculas

Puedes usar sed junto con tr para transformar el texto a minúsculas:

sed 's/.*/\L&/' archivo.txt

Conclusión

El comando sed es una herramienta versátil y poderosa en Linux para la edición de texto automatizada. Desde operaciones simples como sustituciones de texto hasta manipulaciones complejas con expresiones regulares, sed ofrece una amplia gama de funcionalidades que lo hacen indispensable para administradores de sistemas, desarrolladores y cualquier usuario avanzado de Linux. Aprender a utilizar sed de manera efectiva puede ahorrar tiempo y mejorar la eficiencia en la gestión de archivos y datos.