Não. Não é possível atribuir variáveis não-escalares como esta na linha de comando. Mas não é muito difícil fazê-lo.
Se você puder aceitar um nome de matriz fixo:
awk -F= '
FNR==NR { a[$1]=$2; next}
{ print a[$1] }
' <(echo $'index=value\nindex two=value two') <(echo index two)
Se você tiver um arquivo contendo a sintaxe awk para definições de array, você pode include
it:
$ cat <<EOF >file.awk
ar["index"] = "value"
ar["index two"] = "value two"
EOF
$ gawk '@include "file.awk"; BEGIN{for (i in ar)print i, ar[i]}'
ou
$ gawk --include file.awk 'BEGIN{for (i in ar)print i, ar[i]}'
Se você realmente quiser, pode executar gawk
com -E
em vez de -f
, o que deixa você com uma linha de comando não interpretada. Você pode então processar essas opções de linha de comando (se parecer uma atribuição de variável, atribua a variável). Se você quiser seguir esse caminho, pode ser útil consultar ngetopt.awk .