texto sustituir script reemplazar para linea especiales espacios eliminar completa comando caracteres blanco bash unix shell sed terminal

bash - sustituir - Use el contenido de un archivo para reemplazar una cadena usando SED



sed reemplazar linea completa (2)

En última instancia, con lo que busqué, es mucho más simple que muchas soluciones que encontré en línea:

str=xxxx sed -e "/$str/r FileB" -e "/$str/d" FileA

Soporta plantillas como tales:

str=xxxx sed -e "/$str/r $fileToInsert" -e "/$str/d" $fileToModify

¿Cuál sería el comando sed para los scripts de mac shell que reemplazaría todas las iteraciones de la cadena "fox" con todo el contenido de cadena de myFile.txt?

myFile.txt sería contenido html con saltos de línea y todo tipo de caracteres. Un ejemplo sería

</div> </div> <br> <div id="container2"> <div class="question" onclick="javascript:show(''answer2'')";>

¡Gracias!

EDITAR 1

Este es mi código real:

sed -i.bkp ''/Q/{ s/Q//g r /Users/ericbrotto/Desktop/question.txt }'' $file

Cuando lo ejecuto me sale:

sed in place editing only works for regular files.

Y en mis archivos, la Q se sustituye por una tonelada de caracteres chinos (!). ¡Extraño!


Puedes usar el comando r . Cuando encuentres un ''zorro'' en la entrada ...

/fox/{

... reemplazarlo por nada ...

s/fox//g

... y lea el archivo de entrada:

r f.html }

Si tiene un archivo como:

$ cat file.txt the quick brown fox jumps over the lazy dog fox dog

el resultado es:

$ sed ''/fox/{ s/fox//g r f.html }'' file.txt the quick brown </div> </div> <br> <div id="container2"> <div class="question" onclick="javascript:show(''answer2'')";> jumps over the lazy dog dog </div> </div> <br> <div id="container2"> <div class="question" onclick="javascript:show(''answer2'')";>

EDIT : para alterar el archivo que se está procesando, simplemente pase la -i a sed:

sed -i ''/fox/{ s/fox//g r f.html }'' file.txt

Algunas versiones sed (como la mía) requieren que pase una extensión a la -i , que será la extensión de un archivo de copia de seguridad con el contenido anterior del archivo:

sed -i.bkp ''/fox/{ s/fox//g r f.html }'' file.txt

Y aquí es lo mismo que un forro, que también es compatible con Makefile

sed -i -e ''/fox/{r f.html'' -e ''d}''