同一キーの最後の行を出力するワンライナー

Tukubai

$ getlast 1 1

と同じことを、getlastを使わないでgawkだけでやってみる。

$ cat target
0000007 セロリ 20060201 117
0000007 セロリ 20060202 136
0000007 セロリ 20060203 221
0000017 練馬大根 20060201 31
0000017 練馬大根 20060202 127
0000017 練馬大根 20060203 514
0000021 温州みかん 20060201 90
0000021 温州みかん 20060202 324
0000021 温州みかん 20060203 573
0000025 プリンスメロン 20060203 391
0000030 じゃが芋 20060202 541
0000030 じゃが芋 20060203 184

$ gawk 'BEGIN { key="" } { if($1!=key && key!="") { print pre; } key=$1; pre=$0 } END { print $0 }' targetfile
0000007 セロリ 20060203 221
0000017 練馬大根 20060203 514
0000021 温州みかん 20060203 573
0000025 プリンスメロン 20060203 391
0000030 じゃが芋 20060203 184

うーむ、もっとシンプルに書けそう。

ちなみに、getfirstはこんな感じ。

$ gawk 'BEGIN { key="" } { if($1!=key) { print $0; } key=$1; }' targetfile
0000007 セロリ 20060201 117
0000017 練馬大根 20060201 31
0000021 温州みかん 20060201 90
0000025 プリンスメロン 20060203 391
0000030 じゃが芋 20060202 541