[bash] modificar texto de un archivo [solved]

hola.

vereis, estoy manos en la masa con un script, y necesito modificar texto de dentro de un archivo... segun he estado leyendo, deberia poder usar el comando sed, pero lo he probado un poco dando palos de ciego, entre otras, de las siguientes maneras:

sed 's/a_reemplazar/reemplazo/g archivo

cat archivo | sed s/a_reemplazar/\reemplazo/g > archivo

sed -e 's/a_reemplazar/reemplazo/' >archivo

y lo mejor que consigo es que se borre completamente el contenido del archivo de salida.

el comando tr no me sirve porque el string a reemplazar y el reemplazo no tienen por que coincidir en longitud, y habrá espacios.

realmente, me serviria simplemente si pudiera sustituir una linea entera, la cual identificaría con grep... pero tampoco se me ocurre como hacerlo

el problema, no lo tengo a la hora de sustituir (si solo fuera eso), sino a la hora de modificar el archivo sustituyendo solo la parte deseada....


echais una mano orientativa, por favor?
Con el sed de GNU: sed -i s/<a_reemplazar>/<reemplazo>/g <fichero>
El fichero se borra porque la shell, al ver esto:

comando > fichero


Trunca 'fichero' antes de ejecutar el comando. Así que cuando ejecutas

cat fichero | sed .... > fichero


sed siempre ve un fichero vacío.

- ferdy
muy util la informacion de los dos.

creo que con esto ya me las puedo arreglar yo.

muchas gracias a ambos.
3 respuestas