1. Inicio
  2. Tecnologia
  3. Linux
  4. Tutorial de Sed

Tutorial de Sed

Sed (Stream EDitor) es una herramienta que nos permite hacer modificaciones a un archivo de texto.

Para este tutorial usaremos un archivo que contiene las siguientes líneas:

$ cat ejemplo.txt

Linea 1
Linea 2
Linea 3
Linea 4
Linea 5

Agregar líneas

Agregar una linea en una posición del archivo:

$ sed '4 i Insertar en la 4ta linea' ejemplo.txt
Linea 1
Linea 2
Linea 3
Insertar en la 4ta linea
Linea 4
Linea 5

Agregar una linea antes de un patrón definido:

$ sed '/Linea 3/ i Antes de la Linea 3' ejemplo.txt
Linea 1
Linea 2
Antes de la Linea 3
Linea 3
Linea 4
Linea 5

Agregar una linea después de un patrón definido:

$ sed '/Linea 3/ a Después de la Linea 3' ejemplo.txt
Linea 1
Linea 2
Linea 3
Después de la Linea 3
Linea 4
Linea 5

Agregar una línea antes de la última línea del archivo:

$ sed '$ i Antes de la Ultima Linea' ejemplo.txt
Linea 1
Linea 2
Linea 3
Linea 4
Antes de la Ultima Linea
Linea 5

Agregar una línea despues de la última línea del archivo:

$ sed '$ a Despues de la Ultima Linea' ejemplo.txt
Linea 1
Linea 2
Linea 3
Linea 4
Linea 5
Despues de la Ultima Linea

Reemplazar

Reemplazar una línea según un patrón especificado:

$ sed '/Linea 3/ c Aqui estaba la Linea 3' ejemplo.txt
Linea 1
Linea 2
Aqui estaba la Linea 3
Linea 4
Linea 5

Reemplazar líneas según un patrón especificado:

$ sed '/Linea / c Aqui estaba la palabra Linea #' ejemplo.txt
Aqui estaba la palabra Linea #
Aqui estaba la palabra Linea #
Aqui estaba la palabra Linea #
Aqui estaba la palabra Linea #
Aqui estaba la palabra Linea #

Reemplazar una línea en específico:

$ sed '4 c Aqui estaba la Linea 4' ejemplo.txt
Linea 1
Linea 2
Linea 3
Aqui estaba la Linea 4
Linea 5
$ sed '$ c Ultima Linea' ejemplo.txt
Linea 1
Linea 2
Linea 3
Linea 4
Ultima Linea

Borrar líneas

Borrar la enésima línea (Línea 4 en este ejemplo):

$ sed '4d' ejemplo.txt
Linea 1
Linea 2
Linea 3
Linea 5

Borrar un rango de líneas (Rango 2-4 en este ejemplo):

$ sed '2,4d' ejemplo.txt
Linea 1
Linea 5

Borrar líneas con un patrón especificado

$ sed '/Linea 3/d' ejemplo.txt
Linea 1
Linea 2
Linea 4
Linea 5

Borrar la última línea del archivo:

$ sed '$d' ejemplo.txt
Linea 1
Linea 2
Linea 3
Linea 4

Sustituir

Sustituir según un patrón especificado:

sed 's/Linea /Linea Nro /g' ejemplo.txt
Linea Nro 1
Linea Nro 2
Linea Nro 3
Linea Nro 4
Linea Nro 5

Escapar un caracter dentro de una variable

Sed utiliza el caracter "/" como delimitador dentro de su sintaxis predeterminada. Si la expresión a evaluar contiene dicho caracter, sed nos responderá con un error. Veamos el siguiente ejemplo:

VARIABLE="/tmp/prueba.txt"; sed "s/${VARIABLE}/hola/" /tmp/prueba.txt

Al ejecutar el comando anterior, obtendremos el siguiente error:

sed: -e expresión #1, carácter 9: opción desconocida para `s'

Para evitar esto, debemos cambiar el caracter delimitador por cualquier otro que no esté contenido en la expresión a evaluar. Por ejemplo:

VARIABLE="/tmp/prueba.txt"; sed "s|${VARIABLE}|hola|" /tmp/prueba.txt
aqui hemos cambiado el delimitador "/" por "|".