コマンドラインにawk配列を設定しますか?

コマンドラインにawk配列を設定しますか?

-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-fngetopt.awk

おすすめ記事