会社の以前の従業員が作成したいくつかのスクリプトを修正/再作成していますが、シェルスクリプトの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 ..