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 "|".