Ho utilizzato uno script di bash (script.sh) che utilizza vari script awk (script1.awk, script2.awk) che sono personalizzati in "runtime", sostituendo i valori per esempio. Ho cercato modi per incorporarli completamente nel primo script di bash. Idealmente, vorrei avere un file simile a questo:Incorporamento awk in uno script di shell
################################
# AWK scripts #
################################
read -d '' scriptVariable <<'EOF'
'
{my block commands;}
'
EOF
################################
# End of AWK Scripts #
################################
awk $scriptVariable ${inputfile} # This line obviously doesn't work
al posto del tradizionale:
awk '{
my script commands
' ${intputfile}
Certo, li ho potuto scrivere su un file, ma il punto non è quello di . Eventuali suggerimenti ? EDIT: anche se le risposte dogbane funzionano bene, il problema successivo è che con i tag "HERE" < <, i caratteri di nuova riga non vengono letti. Non posso annullare la query poiché, in caso contrario, sta tentando di interpretare lo script awk quindi incontrando un segno $ all'interno (e ci sono). E senza nessuna nuova riga, non posso commentare nulla all'interno dello script awk (senza commentare metà dello script quando i caratteri di nuova riga vengono rimossi ...). Qualcuno?
<< '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
Funziona con 'awk" $ scriptVariable "$ {inputfile}' – mouviciel
Sembra che tu abbia semplicemente bisogno di aggiornare il tuo linguaggio di scripting a qualcosa di meglio - Perl o Python. Sarà più facile e lavorerà più velocemente. – mvp
già provato, non è riuscito con 'awk: errore di sintassi a riga di origine 1 contesto è \t >>> '<<< awk: salvataggio sulla linea fonte 18' –