Quiero usar un documento here-doc para comandos sed y proporcionar el archivo que se leerá y el archivo de salida.
He visto Here-Documents de la guía Advanced Bash Scripting, pero no menciona nada sobre argumentos regulares al usar un here-doc. ¿Es posible?
Me gustaría lograr algo como lo siguiente:
#!/bin/bash
OUT=/tmp/outfile.txt
IN=/my_in_file.txt
sed $IN << SED_SCRIPT
s/a/1/g
s/test/full/g
SED_SCRIPT
> $OUT;
Cualquier ayuda es muy apreciada.
fuente
-f -
ensed
pero requiere la sustitución de proceso:<( command )
.En caso de que
sed
no soporta la lectura de un guión destdin
(usando-f -
), puede utilizar la sustitución de proceso (disponible enbash
,zsh
,ksh93
):El paréntesis de cierre
)
debe seguir al delimitador final (SEC_SCRIPT
) inmediatamente o después de una nueva línea. En el caso de la sustitución de procesos, también puede usar enecho
lugar de un documento aquí:fuente
"$IN"
o inclusotestfile.txt
) inmediatamente después del comando sed en sí mismo; quería un-e script
o-f file
. Reorganizar la respuesta de @pabouk funcionó para mí:sed -f <( cat << ETC ... ETC) "$IN" > "$OUT"
SED_SCRIPT
.Quizás un mejor enfoque:
:)
fuente