¡Esta es una revisión vieja del documento!
sed
sed es un 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 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
