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}''