El comando sed es una herramienta fundamental para ser productivos modificando ficheros de texto, el trabajo interactivo y repetitivo que haríamos a través de un editor de texto, podemos encargárselo a sed. Si modificamos habitualmente ficheros de texto, compensará hartamente el tiempo y el esfuerzo de su aprendizaje.
El nombre de sed proviene de Stream Editor, y hace referencia a que acepta un flujo de entrada de texto para trabajar, el cual va a modificar aplicándole una serie de comandos agrupados en un script, y el resultado de la modificación lo mostará por la salida estándar, usualmente la pantalla.
Los siguientes usos son habituales con sed:
- Editar uno o más ficheros.
- Simplificar las ediciones repetitivas en múltiples ficheros.
- Convertir ficheros de texto de un formato a otro.
La orden sed fue una de las primeras utilidades que aparecieron para el procesado de archivos desde la línea de comandos. Su aparición se produce en la versión 7 de Unix, y pretende ser una evolución del comando grep que permita las sustituciones. La sintaxis de los comandos de sed se basa en la sintaxis de las instrucciones del editor de línea interactivo ed. La evolución de sed nos lleva al comando awk, y estos dos comandos son la base del lenguaje Perl.
Para usar bien el comando sed es necesario previamente dominar las expresiones regulares, estas se utilizarán para construir patrones de texto, y se usa la misma sintaxis que en grep.
Conforme avance el tutorial iremos viendo el potencial del comando sed, pero para hacernos una primera idea, pensemos en modificar un sitio web con múltiples páginas html, y lo que pretendemos hacer es sustituir el etiquetado <i> por el <em>, suponiendo, para simplificar ahora, que no se usan atributos ni eventos en las etiquetas. Una simple orden ejecutaría todo el trabajo:
$ sed 's/<\(\/\)\?i>/<\1em>/g' *.html
Como podemos imaginar, no es exagerado lo que se comentó al principio, compensa el aprendizaje de esta herramienta por todo el trabajo que luego nos ahorra.
La versión de sed que vamos a ver es la de GNU que incluye algunas extensiones con respecto del estándar POSIX.