process_data() {
awk -F /dev/fd/3 3<< \EOF
awk code here
EOF
}
Observe que os argumentos da linha de comando podem conter caracteres de nova linha e, embora haja um limite de tamanho, é geral em algumas centenas de kilobytes.
awk '
BEGIN {...}
/.../ ...
END {...}
'
Se o problema for incorporar caracteres de aspas simples no script awk
, outra abordagem é armazenar o código em uma variável:
awk_code=$(cat << \EOF
{print "'quoted' " $0}
EOF
)
E faça:
process_data() {
awk "$awk_code"
}