やりたいこと
以下のような変数が格納されているとして
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