シェルスクリプト内の変数をawkで指定する

linux

やりたいこと

検索ワードの格納されたファイルをwhileでloopによってgrep検索させ、HITした行の1列目の情報を出力。出力する際に、検索ワード自体も出力させる。

find.txt:検索したい文字列が格納されたファイル

$ cat find.txt
東京
大阪
福岡

original.txt:検索させたいオリジナル文章

$ cat original.txt
answer1 北海道 札幌 aaa bbb ccc xyz
answer2 新宿 ddd eee 東京 fff abc
answer3 東京 渋谷 ggg hhh iii qqq yyy
answer4 大阪 jjj 梅田 kkk lll
answer5 mmm nnn ooo 兵庫 神戸
answer6 沖縄 ppp qqq rrr 那覇

期待する出力結果

東京 answer2
東京 answer3
大阪 answer4

NG例

$ cat find.txt | while read line;
> do
> cat original.txt | grep $line | awk -F " " '{print $line,$1}'
> done

$lineがawkに渡した時に元の変数として扱えない

OK例

$ cat find.txt | while read line;
> do
> cat original.txt | grep $line | awk -F " " '{print "'"$line"'",$1}'
> done

参考文献

awk とシェルとの値の受け渡しについて - Qiita
概要awk への値の受け渡しの記事はよく見かけるがawk からシェルへの値の受け渡しの記事が少ないのでまとめてみた。シェルから awk への値の受け渡しawk への値の受け渡しは -v オプ…

コメント