Ich möchte ein Here-Doc für sed-Befehle verwenden und die zu lesende Datei und die Ausgabedatei bereitstellen.
Ich habe mir Here-Documents aus dem Advanced Bash Scripting-Handbuch angesehen, aber es wird nichts über reguläre Argumente bei der Verwendung eines Here-Docs erwähnt. Ist es überhaupt möglich?
Ich möchte Folgendes erreichen:
#!/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;
Jede Hilfe wird sehr geschätzt.
quelle
-f -
insed
erfordert, aber eine Prozessersetzung erfordert :<( command )
.Im Fall
sed
nicht unterstützt von einem Skript liest ausstdin
(mit-f -
), können Sie Prozess - Substitution (erhältlich inbash
,zsh
,ksh93
):Die schließende Klammer
)
mussSEC_SCRIPT
unmittelbar oder nach einer neuen Zeile auf das Endtrennzeichen ( ) folgen. Im Falle einer Prozessersetzung können Sieecho
anstelle eines hier beschriebenen Dokuments auch Folgendes verwenden:quelle
"$IN"
oder sogartestfile.txt
) unmittelbar nach dem Befehl sed nicht - sie wollte ein-e script
oder-f file
. Das Umstellen der Antwort von @pabouk hat bei mir funktioniert:sed -f <( cat << ETC ... ETC) "$IN" > "$OUT"
SED_SCRIPT
.Vielleicht ein schöner Ansatz:
:) :)
quelle