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;