Ruby ではなくシェルからこれを行うことができ、*nix で作業している場合は、より簡単になります。このために作成されたuniqと呼ばれる *nix ツールがあります。
ファイルinput.txtのサンプル入力を指定すると、次のようになります。
Los Angeles, 6
Los Angeles, 6
New York, 31
New York, 31
New YOrk, 31
次に、このコマンドは隣接する重複を削除し、結果を標準出力に出力します。
$ uniq input.txt
Los Angeles, 6
New York, 31
New YOrk, 31
「New York」の 3 番目のインスタンスのタイプミスにより、重複として認識されないことがわかります。
結果を別のファイルに送信するには:
$ uniq input.txt >output.txt
$ cat output.txt
Los Angeles, 6
New York, 31
New YOrk, 31
元のファイルを変更するために、uniq の出力をそのファイルにリダイレクトすることはできません。uniq が読み取っている入力を上書きすることになります。代わりに、一時ファイルを使用します。
$ uniq input.txt >input.txt.tmp && cp input.txt.tmp input.txt
$ cat input.txt
Los Angeles, 6
New York, 31
New YOrk, 31