(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Bash/Linux/awk】awkの中でシェルの変数の中身を展開して利用する

スポンサーリンク

やりたいこと

以下のような変数が格納されているとして

sport=baseball

同変数を利用して以下のようなawkの処理を行いたい。

$ cat test.csv | awk 'BEGIN{FS=","} $1 == "baseball" {print $0}'

尚、上記は指定列での検索を行う構文。

環境情報
$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan

やり方

-vオプションにて変数を指定した上で$無しで利用する。

$ cat test.csv | awk -F, -v sport="$sport" 'BEGIN{FS=","} $1 == sport {print $0}'
baseball,1866,America

以下、補足です。

補足

単純に以下のように記載してもシングルクォーテーションで括られているため変数は展開されません。

$ cat test.csv | awk 'BEGIN{FS=","} $1 == "$sport" {print $0}'

よってシングルクォーテーションの外で変数を連携する必要があります。

尚、文字列同様にダブルクオーテーションで変数を囲ってしまうと、変数ではなく文字列として認識されてしまうのでご注意ください。

$ cat test.csv | awk -F, -v sport="$sport" 'BEGIN{FS=","} $1 == "sport" {print $0}'
sport,X,XX