sed es un "stream editor", un editor que recibe un texto por standard input, procesa sus contenidos línea por línea, y envía el resultado a standard output. Se pueden hacer cosas muy interesantes con él, hay mucho que aprender, y sugiero visitar la red para encontrar referencias más completas. Aquí hay algunos ejemplos de comandos que yo he usado, y que muestran algunas de las posibilidades de sed.
Un uso habitual de sed es para substituir una sucesión de caracteres por otra. La sintaxis general es de la forma:
sed -e [direccion]s/patron/reemplazo/[flags]direccion y flags son opcionales.
Para tomar los contenidos de un archivo fuente, procesarlos con sed y enviarlos a un nuevo archivo resultado:
sed ... fuente > resultado
Ejemplos sencillos:
sed -e 's/coseno/seno/g'
sed -e 's/coseno/seno/g' -e 's/tangente/cotangente/g'
sed -e 's/a//g'
sed -e 's/\\//g' -e 's/\"/_/g'
sed -e 's/"% Solo PDF"/" "/g'
Una característica realmente poderosa de sed es que tanto "patron" puede ser cualquier expresión regular, y "reemplazo" puede referirse a partes específicas de "patron" (backreferences). Esto permite realizar operaciones bastante complicadas.
Ejemplos con expresiones regulares:
sed -e 's/pat[oa]//g'Y si se quiere eliminar las ocurrencias de "pato", "pata", "gato" y "gata":
sed -e 's/[pg]at[oa]//g'
sed -e 's/pat[oa]s//g'como en el ejemplo anterior, o bien con
sed -e 's/pat.s//g'si uno está seguro que en el archivo no existe la posibilidad de que el cuarto carácter sea otra cosa que a o b.
sed -e 's/\(pato\|elefante\)//g'
sed -e 's/v_\([xyz]\)^\(.\)/potencia(v_\1,\2)/g'o bien
sed -e 's/v_\(x\|y\|z\)^\(.\)/potencia(v_\1,\2)/g'Los paréntesis permiten agrupar una o más expresiones regulares a las cuales uno se puede referir posteriormente como un todo. En este caso, aparece un primer grupo formado por los caracteres x, y o z, y un segundo grupo formado por un solo carácter, que se encuentra después del ^. Esto entonces permite buscar todas las ocurrencias de expresiones del tipo v_i^n, con i=x,y,z, y n una cadena de un solo carácter (por ejemplo, un entero de un dígito). Luego nos referimos al primer grupo con \1, al segundo con \2, etc. Así, finalmente logramos reemplazar v_i^n por potencia(v_i,n), para todo i y n.