gawk/awkのユーザ定義変数にファイルの値(位置変数)を割り当てる

私は "サイズ"と呼ばれる変数を作成し、gawkの位置変数から値を割り当てようとしています。しかし、それはうまくいかないようです。以下の例では、フィールド4の値を変数 "size"に格納しようとしています。可変サイズを印刷すると、フィールド4の代わりに行全体が印刷されます。

ファイルされた値を後で使用するために変数に保存するにはどうすればよいですか?

prompt>  echo "Live in a big city" | gawk '/Live/ {size=$4; print $size}'

以下が出力されます。 大都市に住む

I would like to see just this:

big

0

1 答え

ドル記号を残す。 awkはシェルのようではなく、変数を逆参照するために余分な句読点が必要ないCと似ています。現在の行のn番目のフィールドの値を取得するためにドル記号のみを使用します。

echo "Live in a big city" | gawk '/Live/ {size=$4; print size}'

awk変数 size に値 big が割り当てられています。次に、printステートメントで、awkは size 変数を参照解除して print $ big を試みます。文字列 "big"は整数として解釈され、数字で始まらないので、数字は0として扱われます。したがって、 print $ 0 、したがって完全な行が得られます。

2
追加された