同一キーの最後の行を出力するワンライナー
$ 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