Chcę użyć tutaj doc do poleceń sed i dostarczyć plik do odczytu i plik wyjściowy.
Przeglądałem Here-Documents z przewodnika Advanced Bash Scripting, ale nie wspomina nic o regularnych argumentach podczas korzystania z here-doc. Czy to w ogóle możliwe?
Chciałbym osiągnąć coś takiego:
#!/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;
Każda pomoc jest na prawdę doceniana.
źródło
-f -
wsed
ale wymaga zmiany procesu:<( command )
.W przypadku
sed
nie obsługuje czytania skryptu odstdin
(za pomocą-f -
), można użyć podstawienia procesowego (dostępne wbash
,zsh
,ksh93
):Nawias zamykający
)
musi następować po znaku ogranicznika końca (SEC_SCRIPT
) natychmiast lub po nowej linii. W przypadku zastąpienia procesu możesz również użyćecho
zamiast dokumentu tutaj:źródło
"$IN"
a nawettestfile.txt
) natychmiast po samej komendzie sed - chciał mieć-e script
lub-f file
. Ponowna aranżacja odpowiedzi @pabouk zadziałała dla mnie:sed -f <( cat << ETC ... ETC) "$IN" > "$OUT"
SED_SCRIPT
.Może ładniejsze podejście:
:)
źródło