Ich habe ein Bash-Skript (script.sh) verwendet, das verschiedene awk-Skripts (script1.awk, script2.awk) verwendet, die auf "Laufzeit" zugeschnitten sind, indem Werte für Instanz ersetzt werden. Ich habe nach Möglichkeiten gesucht, sie vollständig in das erste Bash-Skript einzubetten. Im Idealfall würde Ich mag eine Datei wie folgt aussehen haben:Embedding awk in einem Shell-Skript
################################
# AWK scripts #
################################
read -d '' scriptVariable <<'EOF'
'
{my block commands;}
'
EOF
################################
# End of AWK Scripts #
################################
awk $scriptVariable ${inputfile} # This line obviously doesn't work
statt der traditionellen:
awk '{
my script commands
' ${intputfile}
Natürlich habe ich sie in eine Datei schreiben könnte, aber der springende Punkt ist nicht zu . Irgendwelche Vorschläge ?
EDIT: Obwohl Dogbane Antworten funktioniert gut, das nächste Problem ist, dass mit den < < 'HIER' Tags, Newline-Zeichen nicht gelesen werden. Ich kann nicht unquote da sonst, er versucht, das Awk-Skript dann zu interpretieren ein $ -Zeichen innerhalb (und es gibt). Ohne Zeilenumbrüche kann ich nichts im awk-Skript kommentieren (ohne das halbe Skript zu kommentieren, wenn die Zeilenumbrüche entfernt werden ...). Jeder?
<< 'EOF'
BEGIN{#Hello
print $1
}
EOF # Is read as BEGIN{#Hello print $1} by awk; ie BEGIN{
<< EOF
BEGIN{#Hello
print $1
}
EOF #Is read correctly by awk but Bash tried to express $1 and fails
Funktioniert es mit 'awk $ $ scriptVariable" $ {inputfile} ' – mouviciel
Es klingt, als ob Sie Ihre Skriptsprache einfach auf etwas Besseres aktualisieren müssen - Perl oder Python. Es wird einfacher und schneller arbeiten. – mvp
bereits versucht, scheiterte es mit 'awk: Syntaxfehler bei Quellenleitung 1 Kontext ist \t >>> '<<< awk: Bürgen an der Quelle Linie aus 18' –