Aloje su propio agente de IA con OpenClaw: instalación gratuita en un solo clic!

Cómo usar el comando sed de Linux en 2026

Cómo usar el comando sed de Linux en 2026

Todo administrador de sistemas se topa con el mismo problema tarde o temprano: tienes 400 archivos de configuración, una dirección IP incorrecta en todos ellos y exactamente cero ganas de abrir cada uno manualmente. Ahí es donde el comando sed justifica su uso.

El comando sed de Linux (abreviatura de stream editor) permite buscar, reemplazar, insertar y eliminar texto en archivos directamente desde la terminal. Sin interfaz gráfica, sin editor de texto, sin navegar por menús. Introduce datos y obtén la salida transformada. Gestiona patrones regex, trabaja con entrada canalizada y procesa archivos de cualquier tamaño sin dificultad.

Esta guía cubre la sintaxis del comando sed, sus opciones, ejemplos prácticos y casos de uso reales. Si nunca has usado sed, al final tendrás un dominio sólido de la herramienta. Si ya conoces lo básico, las secciones sobre procesamiento por lotes y referencias inversas deberían llenar los vacíos.

Sed funciona en un ciclo simple: lee una línea, aplica los comandos, imprime el resultado y repite. Nunca carga todo el archivo en memoria, lo que significa que puede procesar archivos de registro de varios gigabytes sin dificultad. Ese enfoque línea a línea es lo que lo hace tan eficiente para la automatización mediante scripts y una de las razones por las que ha sobrevivido desde los años 70.

Sintaxis y opciones del comando sed

La sintaxis general de sed es la siguiente:

sed [options] 'script' filename

La parte del script contiene el subcomando, el patrón de búsqueda, la cadena de reemplazo y los indicadores. Estos se escriben entre comillas simples y se separan por un delimitador, que generalmente es una barra diagonal (/). También puedes usar la barra vertical o la coma como delimitadores cuando tu patrón contiene barras.

A continuación se muestran las opciones de sed más comunes:

  • -i — sobrescribe el archivo original en su lugar. El indicador más potente y útil.
  • -n — suprime la impresión automática. Solo las líneas que imprimas explícitamente con p aparecerán.
  • -e — permite encadenar múltiples comandos en una sola llamada a sed.
  • -f — lee comandos desde un archivo de script externo.
  • –help — muestra información de uso.
  • –debug — anota la ejecución en la terminal.
  • -b — abre archivos en modo binario.
  • -l — establece la longitud de ajuste de línea para el comando l.

El comando más utilizado es s (sustituir). Su sintaxis:

's/regex_pattern/replacement/flags'

Los indicadores de sed que modifican el comportamiento de sustitución:

  • g — reemplazo global. Afecta a todas las coincidencias en la línea, no solo a la primera.
  • p — imprime la línea modificada como salida adicional.
  • i — coincidencia sin distinción entre mayúsculas y minúsculas.
  • Número — reemplaza solo la enésima aparición (por ejemplo, 2 reemplaza la segunda coincidencia).

Puedes combinar indicadores. El indicador gi realiza una sustitución global sin distinción entre mayúsculas y minúsculas.

Una cosa que vale la pena saber: el delimitador no tiene que ser una barra. Si estás trabajando con rutas de archivos o URL llenas de barras, usa una barra vertical o una coma en su lugar. sed ‘s|/old/path|/new/path|g’ resulta mucho más legible que escapar cada barra. Utiliza cualquier carácter que no aparezca en las cadenas de búsqueda o reemplazo.

Cómo instalar sed en Linux

Es muy probable que sed ya esté instalado en tu sistema, ya que se incluye con prácticamente todas las distribuciones de Linux. Pero si utilizas alguna imagen de contenedor simplificada o instalación mínima, a continuación se explica cómo instalarlo:

Actualiza tu lista de paquetes:

sudo apt-get update

Instala el paquete sed:

sudo apt-get install sed

Verifica la instalación:

sed --version

Si muestra un número de versión, la instalación es correcta. En distribuciones basadas en RHEL/CentOS, sustituye apt-get por yum o dnf. El nombre del paquete se mantiene igual en todas las distribuciones.

En Arch Linux, sed es parte del grupo base y debería estar presente. En Alpine (común en imágenes de Docker), usa apk add sed. Si utilizas macOS, el sed predeterminado es la versión BSD, que se comporta de forma ligeramente diferente a GNU sed. La mayoría de los tutoriales en línea asumen GNU sed, por lo que se recomienda instalarlo mediante Homebrew con brew install gnu-sed para evitar incompatibilidades.

Ejemplos de comandos sed

A continuación se presentan 10 ejemplos prácticos del comando sed que cubren las operaciones más habituales. Cada comando deja el archivo original intacto. Añade -i cuando estés listo para aplicar los cambios.

Buscar y reemplazar una cadena con sed

El uso más común de sed. La sintaxis de búsqueda y reemplazo de sed es muy sencilla:

sed 's/old_string/new_string/' myfilename.txt

Supongamos que tienes un archivo llamado scenery.txt y necesitas cambiar «imágenes» por «fotos»:

sed 's/images/photos/' scenery.txt

Esta operación de búsqueda y reemplazo solo afecta a la primera coincidencia en cada línea. Si la cadena de búsqueda contiene barras, cambia a un delimitador diferente:

sed 's|/usr/local|/opt|' config.txt

El archivo original permanece intacto. Sed envía resultados a stdout por defecto. Una vez confirmado que la salida es correcta, añade -i para escribir los cambios en el archivo. Prueba siempre primero; aplica los cambios después.

Reemplazar la enésima aparición en una línea

Cuando una palabra aparece varias veces en la misma línea y solo quieres cambiar una instancia específica, añade un indicador de número:

sed 's/old_string/new_string/2' myfilename.txt

El 2 indica a sed que omita la primera coincidencia y reemplace solo la segunda. Por ejemplo, reemplaza la primera «música» por «canción»:

sed 's/music/song/1' playlist.txt

Reemplazar todas las apariciones con el indicador g

Sin el indicador g, sed se detiene después de la primera coincidencia por línea. El indicador de reemplazo global de sed soluciona eso:

sed 's/eagle/falcon/g' birds.txt

Cada «águila» en cada línea se convierte en «halcón». Esto es lo que la mayoría de los usuarios busca al pensar en búsqueda y reemplazo. Sin el indicador g, sed solo afecta la primera coincidencia por línea. Este comportamiento predeterminado suele confundir a los usuarios menos experimentados. Si la sustitución parece omitir algunas coincidencias, el indicador g es casi con certeza lo que falta.

Reemplazar desde la enésima a todas las ocurrencias

Puedes combinar un número con el indicador g para comenzar a reemplazar desde una ocurrencia específica en adelante:

sed 's/pisces/aquarius/2g' astrology.txt

Esto omite la primera «piscis» en cada línea y reemplaza desde la segunda ocurrencia hasta la última. Específico, pero útil cuando los datos tienen una estructura predecible.

Paréntesis del primer carácter de las palabras

Un ejemplo de sed con expresiones regulares extendidas y un grupo de captura:

echo "An example of the sed command" | sed -E 's/(\b\w)/(\1)/g'

Salida: (A)n (e)xample (o)f (t)he (s)ed (c)ommand

Para procesar un archivo en lugar de entrada canalizada, elimina el comando echo y añade el nombre del archivo al final.

Reemplazar una cadena en una línea específica

Antepón el número de línea al comando s para reemplazar el contenido de una línea específica en esa posición exacta:

sed '2s/cake/bread/' foods.txt

Solo la línea 2 se ve afectada. Todo lo demás pasa sin cambios. Esto es útil cuando sabes exactamente qué línea contiene el valor que necesitas corregir.

Imprimir líneas reemplazadas con la bandera /p

El indicador p duplica cualquier línea modificada en la salida:

sed 's/phones/tablets/p' gadgets.txt

Las líneas no modificadas se imprimen una vez. Las líneas modificadas se imprimen dos veces: una como salida normal y otra como impresión adicional. Esto resulta útil para identificar rápidamente qué líneas afecta el patrón.

Reemplazar una cadena en un rango de líneas

Puedes restringir una sustitución a un rango de líneas específico:

sed '3,5 s/germany/france/' countries.txt

Solo las líneas 3 a 5 son procesadas. Las líneas antes y después se dejan sin cambios. Útil para editar un bloque concreto en un archivo de configuración.

Imprimir solo las líneas reemplazadas

Combina la opción -n con el indicador p para suprimir toda salida predeterminada y mostrar solo las líneas modificadas:

sed -n 's/green/blue/3p' colors.txt

Modo silencioso: solo se imprimen las líneas donde ocurrió una sustitución. Útil para verificar que el patrón funciona antes de ejecutar con -i.

Eliminar líneas de un archivo usando sed

El comando d es la herramienta de sed para eliminar líneas. Eliminar una sola línea por número:

sed '1d' cities.txt

Eliminar un rango:

sed '1,3d' cars.txt

Para eliminar desde la línea 2 hasta el final del archivo:

Eliminar la última línea:

sed '$d' filename.txt

Eliminar todas las líneas que coincidan con un patrón (sed eliminar líneas por regex):

sed '/oabo/d' filestrings.txt

Esto elimina cada línea que contiene «oabo» de la salida. Combínalo con -i y dispondrás de un comando que limpia un archivo en milisegundos.

Un uso frecuente: eliminar líneas de comentarios de archivos de configuración antes de procesarlos. Algo como sed ‘/^#/d’ config.conf elimina todas las líneas que comienzan con un hash. También puedes encadenar múltiples patrones de eliminación mediante el indicador -e para limpiarlos en una sola pasada.

Casos de uso del comando sed

Los ejemplos anteriores cubren la sintaxis. Ahora veamos cómo usar sed en tareas reales de administración de servidores.

sed para procesamiento de archivos por lotes

Hay dos enfoques. El primero consiste en listar múltiples archivos explícitamente:

sed 's/old_string/new_string/g' file1.txt file2.txt file3.txt

El segundo consiste en utilizar find para analizar un directorio. Este es el enfoque más potente para reemplazo a gran escala:

find /etc/myapp/ -type f -exec sed -i 's/old_string/new_string/g' {} \;

Advertencia justa: la bandera -i aquí reescribe archivos en su lugar. Crea copias de seguridad primero. Puedes pasar -i.bak para que sed cree una copia de seguridad de cada archivo automáticamente antes de modificarlo.

Aquí es donde sed resulta especialmente valioso para los administradores de sistemas. Imagina que has migrado un servicio a una nueva IP y necesitas actualizar la dirección en cada configuración de Nginx, cada trabajo cron y cada script que lo referencia. Un comando find+sed y el problema queda resuelto en segundos. La edición manual llevaría el resto de la tarde.

sed para análisis de archivos de registro

Sed no es solo para editar: también es una herramienta eficaz de regex para extracción. Para extraer patrones específicos de archivos de registro y redirigir a un nuevo archivo:

sed -n 's/Error: \(.*\)/\1/p' logfile.log > error_logs.txt

Ese comando encuentra cada línea que comienza con «Error:» y extrae todo lo que aparece después. Cambia el patrón para que coincida con marcas de tiempo, direcciones IP o lo que estés buscando. No es tan potente como awk o grep para análisis complejos, pero para extracciones rápidas, sed lo resuelve en una línea.

Un patrón práctico: extraer todos los códigos de estado 404 de un registro de acceso, o extraer solo las marcas de tiempo de entradas que mencionan un servicio específico. La principal ventaja de sed en este contexto es la capacidad de encontrar y transformar en un solo paso, en lugar de buscar coincidencias con grep y luego usar cut o awk para los campos necesarios.

sed para edición de etiquetas HTML y XML

¿Necesitas cambiar un atributo en varios archivos HTML? El comando sed gestiona etiquetas de marcado sin problemas:

sed 's/\(<h[1-6].*color:\) [^;]*/\1 black/g' webpage.html

Eso encuentra cualquier etiqueta h1 hasta h6 con un estilo de color en línea y cambia el valor a negro. XML funciona de la misma manera. Asegúrate de gestionar correctamente los corchetes angulares y escaparlos.

Este enfoque es adecuado para correcciones rápidas en archivos HTML estáticos. Si necesitas cambiar un nombre de clase en cada div, actualizar una URL de CDN en etiquetas de script o eliminar atributos obsoletos de marcado antiguo, sed lo gestiona sin necesidad de un analizador XML completo. Dicho esto, para estructuras XML profundamente anidadas o complejas, una herramienta de análisis especializada como xmlstarlet es la opción más segura. Sed trata todo como texto plano, por lo que no advertirá si la expresión regular coincide accidentalmente con contenido dentro de un bloque de comentario o CDATA.

Usando sed con archivos de scripts externos

Cuando se ejecutan múltiples comandos sed, incluirlos todos en una línea resulta poco práctico. Es preferible escribirlos en un archivo externo.

Crea un archivo de script:

nano script.sed

Agrega tus comandos, uno por línea (no se necesitan comillas):

s/old_pattern1/new_pattern1/g
/old_pattern2/d

Ejecútalo:

sed -f script.sed target_file.txt

Más limpio, controlable por versiones y menos propenso a causar problemas con las comillas. Para cualquier operación que requiera más de dos o tres comandos, utiliza un archivo de script.

Los archivos de script también hacen que las operaciones sed sean repetibles. Inclúyelos en el repositorio del proyecto, añade un comentario al inicio que explique su función, y dispondrás de una transformación de texto documentada que cualquier miembro del equipo puede ejecutar, lo que resulta mucho mejor que una línea en el historial de bash que nadie puede reconstruir meses después.

Referencias inversas en regex de sed

Una referencia inversa de sed permite capturar parte de una coincidencia y reutilizarla en el reemplazo. La parte capturada se denomina grupo de captura, delimitada por paréntesis escapados.

Ejemplo clásico: reordenar «Último, Primero» a «Primero Último»:

echo "Doe, John" | sed 's/\(.*\), \(.*\)/\2 \1/'

Salida: John Doe

\1 se refiere al primer grupo de captura («Doe»), \2 al segundo («John»). Una expresión regular sed con referencias inversas puede gestionar el reformateo de fechas, reordenar columnas CSV o extraer subcadenas de texto estructurado. Es una de las características que eleva sed de «útil» a «genuinamente potente».

Puedes usar hasta nueve grupos de captura en una sola expresión sed. En la práctica, si se superan tres o cuatro grupos, es preferible usar Perl o Python. Pero para operaciones de dos grupos como intercambiar campos, invertir formatos de nombres o reestructurar registros simples, las referencias inversas de sed son rápidas de escribir y de ejecutar.

Preguntas frecuentes sobre el comando sed de Linux

¿Qué es el comando sed en Linux?

El comando sed en Linux es un editor de flujo que filtra y transforma texto desde la línea de comandos. Lee la entrada línea por línea, aplica las reglas de edición y envía el resultado a la salida estándar, sin necesidad de abrir un archivo en un editor. Forma parte de Unix desde la década de 1970 y sigue siendo una de las formas más rápidas de manipular texto en cualquier sistema Linux. Sed admite expresiones regulares, trabaja con entrada canalizada y gestiona archivos de cualquier tamaño porque los procesa una línea a la vez en lugar de cargar todo en memoria.

¿En qué se diferencia sed de grep?

Ambas son herramientas de procesamiento de texto, pero realizan funciones diferentes. Grep busca patrones en archivos e imprime las líneas coincidentes. Sed puede buscar y modificar: sustituir texto, eliminar líneas, insertar contenido, reordenar cadenas. Grep es como una linterna (encuentra elementos) y sed es como una navaja suiza (encuentra y transforma).

¿Cómo se usa sed en un script bash?

Dentro de scripts bash, sed cumple generalmente tres funciones: imprimir líneas específicas en stdout, eliminar texto no deseado y reemplazar cadenas. Puedes asignar la salida de sed a variables, canalizarla a otros comandos o utilizarla para modificar archivos de configuración durante despliegues automatizados. La sintaxis se mantiene idéntica a la que usarías de forma interactiva. Un patrón común es usar variables de shell dentro de comandos de sed con comillas dobles: sed «s/OLD/OLD/NEW/g» file.txt. Las comillas simples impiden la expansión de variables, por lo que debes usar comillas dobles cuando los patrones provengan de variables.

¿Cómo se diferencia sed de awk?

Sed gestiona la sustitución, eliminación e inserción de texto de forma directa. Awk es un lenguaje de programación completo diseñado para el procesamiento de datos estructurados en columnas. Admite variables, condicionales, bucles y aritmética. Regla general: si se trata de reemplazar una cadena, usa sed. Si se trata de sumar una columna de números o realizar operaciones similares a las de una hoja de cálculo, opta por awk. La diferencia entre sed y awk se reduce a simplicidad frente a potencia.

¿Cómo eliminar líneas en blanco con sed?

Usa el comando d con un patrón que coincida con líneas vacías:
sed ‘/^$/d’ myfilename.txt
La expresión regular ^$ coincide con líneas que no tienen nada entre el inicio y el final. Este es uno de los usos más frecuentes de sed para eliminar líneas en blanco. Añade -i para editar el archivo directamente.

Scroll al inicio