====== sed ======
**sed** es un [[editores de texto|editor de texto]] basado en //cadenas de caracteres//. En esencia puede considerarse como una versión extendida del editor de líneas [[ed]].
A diferencia de este, permite editar el texto por medio de //guion de operaciones//, realizando generalmente una única pasada de interpretación sobre la entrada/s.
De esta manera, se lo puede emplear para realizar transformaciones de texto en una cadena de entrada (un fichero de texto o un cadena de entrada provista desde [[tutorial básico de la consola#caños|caño]]). La capacidad de sed para filtrar texto en un caño es lo que lo distingue particularmente de otros tipo de [[editores de texto]].
>Si eres muy expert@, podrás incluso recurrir a la edición en la línea o globalmente utilizando [[expresiones regulares]].
Existen 3 casos específicos en los que conviene utilizar sed:
- editar ficheros muy largos de editar interactivamente.
- editar ficheros de cualquier tamaño cuando la secuencia de comandos de edición es muy complicada para hacer el tipeado confortable en ambiente interactivo.
- usar múltiples funciones globales de edición eficientemente en un solo paso.
====Comandos de sed ====
sed opera de manera similar a ed. Estos son los comandos básicos.
| Caracter | Acción |
| ''r'' |**carga** un fichero |
| ''w'' |**escribe** a un archivo |
| ''p'' |**imprime** el espacio patrón |
| ''s'' |**sustituye** patrones |
| ''c'' |**añade** texto |
| ''d'' |**borra** texto |
| ''i'' |**inserta** texto |
| ''a'' |**añade** texto al espacio patrón |
| ''l'' |**lista** el contenido del espacio patrón |
| ''n'' |**añade** una nueva línea al espacio patrón |
| ''b'' |**ramifica** a un rotulo, se emplea de forma similar a un goto |
===Instrucciones de sed===
He aquí algunas instrucciones comunes de sed que forman comandos complejos.
^Instrucción de sed^Resutado^
|sed -i 's/Unix/GNU/g' ejemplo.txt |Reemplaza toda instancia de ''Unix'' por ''GNU'' en ''ejemplo.txt'' |
|sed -i.bak 's/Unix/GNU/g' ejemplo.txt |Creando un fichero de respaldo ''ejemplo.txt.bak'' y luego reemplaza toda instancia de ''Unix'' por ''GNU'' en ''ejemplo.txt''. |
|sed 's/Susana/Moria/' ejemplo.txt |Reemplaza sólo la primer instancia de ''Susana'' por ''Moria'' en ''ejemplo.txt''. |
|sed 's/Susana/Moria/g' ejemplo.txt |Reemplaza todas las instancias de ''Susana'' por ''Moria'' en ''ejemplo.txt''. |
|sed '/Patrón antes de/i Esta línea' ejemplo.txt |Inserta la cadena ''Patrón antes de'' previa a la cadena ''Esta línea''. |
|sed '/Patrón después/a Esta línea' ejemplo.txt |Agrega la cadena ''Patrṕn después'' posterior a la cadena ''Esta línea''. |
|sed '/^$/d' ejemplo.txt |Borra todas las líneas en blanco de ''ejemplo.txt'' |
|sed '/^$/d' sample.txt > limpiado.txt |Borra todas las líneas en blanco de ''ejemplo.txt'' y lo guarda en ''limpiado.txt'' |
|sed '/Espacio en Blanco/c\Esta línea fue reemplazada' ejemplo.txt |Busca cualquier línea con la cadena ''Espacio en Blanco'' (sensible a mayúsculas) y la reemplaza con la cadena ''Esta línea fue reemplazada'' |
|sed -n '2,4p' ejemplo.txt |Presenta desde la línea 2 a la 4 inclusive de ''ejemplo.txt'' |
|sed '3d' ejemplo.txt |Elimina exactamente la línea 3 ''ejemplo.txt'' |
|sed -i 's/http:/https:/g' *.html |Busca toda instancia de la cadena ''http:'' en todos los ficheros ''.html'' y las reemplaza con la cadena ''https:'', editando in situ (''-i'') |
|sed -i.bak 's/http:/https:/g' *.html |Busca toda instancia de la cadena ''http:'' en todos los ficheros ''.html'' y las reemplaza con la cadena ''https:'', creando copias de respaldo ''.bak'' de los ficheros modificados |
|sed 's/^[ \t]*//;s/[ \t]*$//' ejemplo.txt |Elimina espacios y tabuladores en blanco al comienzo y al final de cada línea del fichero ''ejemplo.txt''. |
__**Ver también**__: [[Tutorial de sed]]