====== 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]]