Я хочу использовать here-doc для команд sed и предоставить файл для чтения и выходной файл.
Я посмотрел руководство Here-Documents из Advanced Bash Scripting, но в нем ничего не говорится о регулярных аргументах при использовании here-doc. Это вообще возможно?
Я хотел бы добиться чего-то вроде следующего:
#!/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;
Любая помощь очень ценится.
источник
-f -
вsed
но она требует замены процесса:<( command )
.В случае , если
sed
не поддерживает чтение сценария изstdin
( с помощью-f -
), вы можете использовать процесс замены (доступны вbash
,zsh
,ksh93
):Закрывающая скобка
)
должна следовать за конечным разделителем (SEC_SCRIPT
) сразу или после новой строки. В случае замены процесса вы также можете использоватьecho
вместо документа здесь:источник
"$IN"
или дажеtestfile.txt
), следующий сразу за самой командой sed - он хотел-e script
или-f file
. Переорганизация ответа @pabouk сработала для меня:sed -f <( cat << ETC ... ETC) "$IN" > "$OUT"
SED_SCRIPT
.Может быть, более хороший подход:
:)
источник