-v
このスイッチをコマンドラインで使用してawk
変数値を設定できることがわかります。
awk
コマンドラインで連想配列要素の値を設定する方法はありますか?
それは次のとおりです。
awk -v myarray[index]=value -v myarray["index two"]="value two" 'BEGIN {...}'
ベストアンサー1
カント。コマンドラインでこのような非スカラー変数を割り当てることは不可能です。しかし、作ることはそれほど難しくありません。
固定配列名が利用可能な場合:
awk -F= '
FNR==NR { a[$1]=$2; next}
{ print a[$1] }
' <(echo $'index=value\nindex two=value two') <(echo index two)
配列定義のawk構文を含むファイルがある場合は、次のことができますinclude
。
$ 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]}'
または
$ gawk --include file.awk 'BEGIN{for (i in ar)print i, ar[i]}'
本当にしたい場合は、runの代わりにgawk
使用できます。これにより、解釈されていないコマンドラインが提供されます。その後、これらのコマンドラインオプションを処理できます(変数の割り当てのように見える場合は、変数を割り当ててください)。そのルートに行きたい場合は、次のことを確認すると役に立ちます。-E
-f
ngetopt.awk。