重複行を削除
リストを整理します。重複を削除し、正しく並べ替え、空行を取り除きます。リストを黙って短くするのではなく、どの行が何回重複していたかを表示します。
- 保存しません
- 順番待ちなし
- 登録不要・透かしなし
ここに結果が表示されます。
使い方
リストを貼り付け
メールアドレス、URL、商品コードなど、1行に1項目なら何でも。テキストファイルをドロップすることもできます。
何を「同じ」とするかを選ぶ
行頭・行末のスペースを無視する、大文字・小文字を区別しない、最初または最後の行を残す、あるいは重複があった行をすべて削除する、から選べます。
並べ替えて整理
自然順での並べ替え、逆順、シャッフル、行番号付け、空行の削除を行い、結果をコピーします。
残した行はどうなるか
このページには2種類の異なる空白の扱いがあり、混同しないようにしておく価値があります。比較のための両端の削除はキーを作るだけで、行そのものは決して書き換えません。 残った行は元の空白をそのまま保ちます。整理のオプションはその逆です。インデントの削除、連続するスペースやタブの圧縮、行末の削除は実際の編集であり、重複の削除より前に行われます。そのため、どれかをオンにすると、行の見た目だけでなく、何が重複とみなされるかも知らないうちに変わります。
空行もほかの行と同じように比較されます。つまり、最初の空行以外はすべて、ほかの重複と一緒に消えます。 段落の間に空行があるリストは、最初の空行があった位置に空行が1つだけ残った状態で返ってきます。また、何が重複していたかの一覧に表示されるのは、元の行ではなくキーです。両端が削られ、大文字・小文字を区別しない設定なら小文字に変換されています。そのため、リストにSmithとSMITHの両方がある項目は、小文字で1回、回数2として表示されます。この一覧は、多い順に50件までです。
入力がどうであれ、出力はLF(改行)だけでつながれます。そのため、Windowsのファイルから貼り付けたリストは、処理の途中でCR(キャリッジリターン)が失われます。たいていはそれで問題ありませんが、改行コードを気にするものに結果を貼り付けるなら知っておく価値があります。もう1つの副作用として、「大文字・小文字を区別しない」をオンにすると、比較だけでなく並べ替えも変わり、アクセント付きの文字とそうでない文字も区別しなくなります。そのため、resumeとrésuméは離れずに並んで出てきます。
ほかの目的には
リストが実は表であるなら、行の比較はツールとして形が合っていません。「重複」が1つの列で一致する2行を意味するCSVは、文字列の問題ではありません。文字列として扱えば、重複を見落とすか、似ているだけの行を削除してしまいます。すでに開いているファイルなら、スプレッドシート自体の「重複の削除」がこれを正しく処理します。コマンドラインならmlr uniq -gで、判断に使うフィールドを指定して、どんなサイズでも処理できます。
タブに収まらないほど大きなリストや、来週もまた整理するリストなら、コマンドラインのストリーミング処理が1つの式で済みます。awk '!seen[$0]++'は最初の行と元の順番を残し、このページの初期設定とまったく同じことを、メモリより大きなファイルに対して行えます。両端の削除も、大文字・小文字の統一も、重複の一覧もありません。それが引き換えであり、1,000万行のファイルなら、それが正しい選択です。
よくある質問
リストはどこかに保存されますか?
いいえ。何も保存されず、通信も一切発生しません。ページの読み込み後にインターネットを切断しても動作し続けます。
削除したのに重複が残っているのはなぜですか?
ほぼ必ず、行末の空白が原因です。末尾のスペースの数が違う2つの行は、画面上では同じに見えても実際には違うため、完全一致の比較では両方とも残り、ツールが壊れていると思われてしまいます。そのため、ここでは比較前に両端を削る設定を初期状態でオンにしています。重要なのは、これが「比較」にしか影響しないことです。残った行は元のテキストのままです。黙って行を書き換えるのは「重複を削除」の意味ではないからです。
どの行が残りますか?
初期設定では最初の行が残り、残りの行の順番は変わりません。リストがすでに意味のある順番になっている場合、これは重要です。代わりに最後の行を残すことも、重複があった行をすべて削除して1回だけ出現した行だけを残すこともできます。この最後の方法を使えば、そのリストにしかない項目を見つけられます。
並べ替えるとitem10がitem2より前に来るのはなぜですか?
それが通常のアルファベット順の並べ替えだからです。「1」は「2」より前に来て、その後の数字は比較されません。自然順をオンにすると、連続する数字を数値として比較するため、item2がitem10より前に来ます。これが人が期待する順番です。アクセント付きのテキストも正しく扱います。単純な比較では、文字ではなくその内部の数値を比べるため、「Zürich」が「Zyzzyva」の後に並んでしまいます。
何が削除されたかを表示しますか?
はい。2回以上出現した行を、出現回数の多い順に回数付きで一覧表示します。3行が消えたことを知るより、「どの」項目が4回出現していたかを知るほうが、たいていは役に立ちます。
シャッフルは本当にランダムですか?
はい。ブラウザの暗号論的な乱数源を使ったFisher-Yatesシャッフルを使っています。よくある手抜きの方法、つまりランダムな比較関数で並べ替える方法は、そもそもシャッフルではありません。並べ替えのアルゴリズムは一貫した比較を前提としており、ランダムな比較では結果が元の順番のほうへ測定できるほど偏ります。リストから当選者を選ぶなら、この違いは重要です。
サイズの上限はありますか?
固定のサイズ上限はなく、使用できるメモリ次第です。数十万行のリストでも問題ありません。
ご注意: 並べ替えにはブラウザの言語ルールを使うため、アクセント付きの文字や異なる文字体系も、バイト値ではなく読み手が期待する順番に並びます。そのため、ブラウザによって順番がわずかに異なる場合があります。非常に大きなリストは丸ごとメモリに読み込まれます。
このツールをあなたのサイトに設置
ブログ、授業のページ、ヘルプ記事などに無料で設置できます。コードを1つ貼り付けるだけで、訪問者がそのページ上でツールを使えるようになります。