awk / Grepを使用して指定された列から変数を取得するにはどうすればよいですか?

awk / Grepを使用して指定された列から変数を取得するにはどうすればよいですか?

私は次のデータを持っています:

apple pear sugar pizza
pizza chicken pasta turkey

「ピザ」をgrepしたいのですが、4列目だけをgrepしたいです。以下が利用可能であることを知っています。

awk '$4 == "pizza"' 

しかし、「ピザ」という単語を含むfoodという変数があります。私がするとき

food=pizza
awk '$4 == "$food"'

二重アポストロフィに変更するとエラーが発生します。次のエラーが発生します。

awk: line 1: syntax error at or near ==

どうすればいいですか?

ベストアンサー1

シェル変数は、awkプログラムで使用される単一引用符内では拡張されません。

次のオプションを使用して、シェル変数をawkに渡すことができます-v

food=pizza
awk -v food="$food" '$4 == food'

おすすめ記事