シェルスクリプトでawk -v変数を使用する

シェルスクリプトでawk -v変数を使用する

会社の以前の従業員が作成したいくつかのスクリプトを修正/再作成していますが、シェルスクリプトの1つで次の行が見つかりました。

b=`benchmark=30;grep "Waiting for timer" wk.txt | awk -vbenchmark=$benchmark '$6 > benchmark' | wc -l`

しかし、残念ながら、上記のコード行が何をしたいのかわかりません。ここで「基準」変数を使用するのは混乱しています。次の値を使用してダミーの「wk.txt」ファイルを作成し、エコーされると、$ b変数の値は1(grep + awkコマンドで出力された行数)です。

[sreeraj@server ~]$ cat wk.txt
24  here  above the Waiting for timer 37 make sure

スクリプト作成者が$ benchmarkで何をしようとしているのかを説明できる人はいますか?

awkマニュアルページには以下が表示されますが、-vその機能を理解していません。

-v var=val
--assign var=val
          Assign the value val to the variable var, before execution of the program begins.   Such  variable  values  are
          available to the BEGIN block of an AWK program.

ベストアンサー1

これにより:

awk -v benchmark=30 '...'

これは次のとおりです。

awk 'BEGIN{ benchmark = 30 } ... '

変数の初期値を設定するために使用されます。

著者がなぜこのようなことをしたのかは理解できないが、

benchmark=30; ... | awk -v benchmark=$benchmark ..

彼らは次のようにすることもできます:

... | awk -v benchmark=30 ..

おすすめ記事