awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
今、列 $b にある値を印刷したいのですが、この場合は行全体を印刷します。私がしたいのは、ifステートメントのbの値を使用して、その列の値を出力することです
awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
今、列 $b にある値を印刷したいのですが、この場合は行全体を印刷します。私がしたいのは、ifステートメントのbの値を使用して、その列の値を出力することです
値を渡すには、次の-v
オプションを使用します。
awk -F: -v a=2 -v c=10 '$a=="load"{b=8}$1=="D0001"&&FNR==c{print $b}' MigStat
ノート:
変数を渡すには、 の-v
オプションを使用しますawk
。
awk
リダイレクトを使用する必要のないファイルを読み取ります。
の構造はawk
ですcondition{block}
。
awk
変数を初期化して、ブロックに設定されていない場合0
は、行全体がどこにあるかになります。b
$a=="load"{b=8}
{print $b}
{print $0}
$0
重複して割り当てる必要はありませんb=8
。スクリプトがそこに投稿したようなものであれば、まったく必要ありません$b
。
$a, $c
シェル変数の場合:
awk -F: -v a="$a" -v c="$c" 'a=="load"&&$1=="D0001"&&NR==c{print $8;exit}' MigStat.stat
awk がそれ以上の行を処理するのを停止するためのprint $8
呼び出しの後で、より良い結果が得られます。exit;