Array#uniqとUnix系OSのuniqの挙動が違う件
rubyのuniqがun*xのそれと動きが違う件 - 計算機と戯れる日々
un*xのコマンドのuniq ~$ echo -e "1\n2\n2\n3\n2\n2\n"|uniq 1 2 3 2 一方rubyは >> [1, 2, 2, 3, 2].uniq => [1, 2, 3]
FAQな気がする。
追記
Unix系OSのuniqコマンドは「連続した重複行を取り除く」仕様だ。man uniqしてみたけど、GNU版uniqにも「連続しない重複行を取り除く」オプションはないなぁ…意外だった。
どういう場合に役立つと言われてもよくわからない。Array#uniqをuniqコマンドの仕様に揃えなかったのは、作者がその仕様を気に食わなかったからだろうね。
追記
http://znz.s1.xrea.com/t/?date=20080421#p02
なるほど。そう言われてみればString#squeezeがあった。確かにuniq相当である。Array#squeezeを追加するのもいいけど、Array#uniqにオプションを追加するほうが好みだな。連想できるから。両方あるといいね。