プログラムの出力をいくつかの awk コマンドでパイプしています。これまでのコマンドは次のとおりです。
myprogram | awk '/chk/ { if ( $12 > $13) printf("%s %d\n", $1, $12 - $13); else printf("%s %d\n", $1, $13 - $12) } ' | awk '!x[$0]++'
最後のビットは貧乏人のuniq
もので、私のターゲットでは利用できません。上記のコマンドを実行すると、次のような出力が生成される可能性があります。
GR_CB20-chk_2, 0
GR_CB20-chk_2, 3
GR_CB200-chk_2, 0
GR_CB200-chk_2, 1
GR_HB20-chk_2, 0
GR_HB20-chk_2, 6
GR_HB20-chk_2, 0
GR_HB200-chk_2, 0
GR_MID20-chk_2, 0
GR_MID20-chk_2, 3
GR_MID200-chk_2, 0
GR_MID200-chk_2, 2
私がしたいのはこれです:
GR_CB20-chk_2, 3
GR_CB200-chk_2, 1
GR_HB20-chk_2, 6
GR_HB200-chk_2, 0
GR_MID20-chk_2, 3
GR_MID200-chk_2, 2
つまり、特定のタグ (最初の「フィールド」) の最大値を持つ行のみを印刷したいと考えています。上記の例は、出力がソートされるという点で at データを表しています (あたかもsort
コマンドを介してパイプ処理されたかのように)。