
Gonzalo Gramaglia
PreguntaNo entendí la utilidad del comando ‘sed’. ¿Por qué no se guardan los cambios? ¿Qué significa que cree un “nuevo flujo” con la modificación?
-
[direccion] es opcional, siendo un número de línea (N), rango de números de línea (N,M) o búsqueda de regexp (/cadena/) indicando el ámbito de actuación de las instrucciones. Si no se especifica [direccion], se actúa sobre todas las líneas del flujo.
-
Instruccion puede ser:
- i = Insertar línea antes de la línea actual.
- a = Insertar línea después de la línea actual.
- c = Cambiar línea actual.
- d = Borrar línea actual.
- p = Imprimir línea actual en stdout.
- s = Sustituir cadena en línea actual.
- r archivo = Añadir contenido de "archivo" a la línea actual.
- w archivo = Escribir salida a un archivo.
- ! = Aplicar instrucción a las líneas no seleccionadas por la condición.
- q = Finalizar procesamiento del archivo.
-
-n: No mostrar por stdout las líneas que están siendo procesadas.
-
-s: Tratar todos los ficheros entrantes como flujos separados.

Jorge Cruz Perez
Cada comando tiene sus reglas y tareas, en este caso no guarda, pero si quieres guardarlo tambien es muy sencillo, simplemente al final del comando pones
sed 's/Hanks/Selleck/g' dump1.sql > archivo.txt
> archivo.txt

Alberto Perdomo
Pues SED traduce Stream Editor sino estoy mal, y es muy usado para automatizar las tareas de modificación de contenido de un archivo.
Recibe por input(stdin) una serie de lineas para manipular y aplica a cada una de ellas comandos especificados,a un rango de lineas o a las que cumplan una condición . Es muy comun que este input este dentro de un archivo de texto plano.
Por ejemplo:
Sustituir apariciones de cadena1 por cadena2 en todo el archivo: # sed 's/cadena1/cadena2/g' archivo > archivo2 Sustituir apariciones de cadena1 por cadena2 en las líneas 1 a 10: # comando | sed '1,10 s/cadena1/cadena2/g' Eliminar las líneas 2 a 7 del archivo # sed '2,7 d' archivo > archivo2 Buscar un determinado patrón en un fichero: # sed -e '/cadena/ !d' archivo Buscar AAA o BBB o CCC en la misma línea: # sed '/AAA/!d; /BBB/!d; /CCC/!d' archivo Buscar AAA y BBB y CCC: # sed '/AAA.*BBB.*CCC/!d' archivo Buscar AAA o BBB o CCC (en diferentes líneas, o grep -E): # sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d # gsed '/AAA\|BBB\|CCC/!d'
El formato básico de uso de sed es:
sed [-ns] '[direccion] instruccion argumentos'
Donde:
Para más info se puede escribir sobre la línea de comandos :
man sed