行の並べ替え・重複削除・整理

行の並べ替え、重複や空行の削除、空白のトリム。

このツールについて

リストを貼り付けて整理できます。空白のトリム、空行の削除、重複の削除(大文字と小文字の区別なしも可)に加え、アルファベット順、自然順(item2 が item10 より前)、長さ順、逆順での並べ替えや、シャッフルもできます。

使い方

  1. 1 行に 1 項目でリストを貼り付けます。
  2. 整理する内容を選びます: 空白のトリム、空行の削除、重複の削除(大文字と小文字の区別なしも可)。
  3. 並べ替え順を選びます: 自然順、A から Z、Z から A、長さ順、逆順、シャッフル。
  4. 結果をコピーします。ステータス行に、削除された行数と重複の数が表示されます。

よくある質問

自然順ソートとは何ですか?
自然順ソートでは、テキスト内の数値をその値で比較するため、item2 が item10 より前に来ます。単純なアルファベット順のソートでは、1 が 2 より前なので item10 が先になります。
どの重複が残りますか?
各行の最初の出現が残り、それ以降の重複は削除されます。そのため、並べ替えも行わない限り元の順序が保たれます。
シャッフルは抽選に使えるほどランダムですか?
ブラウザーの暗号論的に安全な乱数生成器と偏りのない Fisher–Yates シャッフルを使っているため、どの並び順も等しい確率で出ます。
重複行が削除されないことがあるのはなぜですか?
行が同じに見えても、完全には一致していません。よくある原因は目に見えない文字です。行の中で通常のスペースの代わりに使われたノーブレークスペース、Web ページからコピーされたゼロ幅スペース、同じアクセント付き文字の 2 種類の Unicode 表現などがあります。「空白をトリム」は行の両端しか整えません。また、「大文字と小文字を区別しない」がオフなら、Apple と apple は別々のままです。
各行が何回出現するかを数えられますか?
ここではできません。ステータス行に表示されるのは、削除された重複の合計数だけです。出現回数を数えるにはシェルを使います。sort list.txt | uniq -c | sort -rn で、重複しない各行が出現回数とともに多い順に出力されます。
何行まで処理できますか?
決まった上限はありません。数万行のリストも入力と同時に処理され、「ファイルを開く」では 50 MB までのテキストファイルを読み込めます。すべてブラウザー内で動作するため、非常に大きなファイルの処理はデバイスのメモリ次第で、何もアップロードされません。

リストから重複行を削除する方法

リストを貼り付けて「重複を削除」をオンのままにすると、それより前に出てきた行はすべて削除されます。「大文字と小文字を区別しない」をオンにすると、Apple と apple は同じ行として扱われ、最初に出てきた表記が残ります。「空白をトリム」は重複削除の前に実行されるため、末尾にスペースのある「apple 」も「apple」と一致します。この末尾のスペースこそ、明らかな重複が削除されないように見える最もよくある原因です。ステータス行には処理前後の行数が表示されます。

重複行の削除は、インポート前のメーリングリストの整理、ホスト名やパッケージ名の 2 つのリストの統合、スプレッドシートの列の一意な値の抽出などによく使われます。列は Excel からコピーしてそのまま貼り付けられます。メールアドレスでは、ドメインは大文字と小文字を区別せず、ほとんどのプロバイダーは名前の部分でも区別しないため、通常は「大文字と小文字を区別しない」をオンにするのが適切です。ファイルパスや大文字と小文字を区別する ID では、オフにしてください。

オンラインでの行の並べ替えと Unix の sort コマンドの違い

「A から Z」と「Z から A」は、ブラウザーのロケール規則に従い、大文字小文字やアクセントを無視して行を並べ替えるため、apple、Banana、Éclair は辞書順に並びます。LC_ALL=C を付けた sort や、比較関数なしの Array.prototype.sort() のような単純なバイト順の並べ替えでは、すべての大文字がすべての小文字より前に来て、アクセント付きの文字は z の後になります。「長さ順」は短い行から順に並べ、長さが同じ場合は自然順で並べます。

参考までに、Unix で同じことをするには、並べ替えと重複削除に sort -u、大文字小文字の無視に sort -f、自然順やバージョン順に sort -V を使います。uniq は隣接する重複しか削除しないため、通常は sort の後に実行します。uniq と違い、このツールはリスト内のどこにある重複も削除でき、「並べ替え」を「順序を保持」にすれば元の順序を保てます。「シャッフル」はリストをランダムに並べ替え、「もう一度シャッフル」で新しい順序になります。

空行を削除して空白をトリムする方法

「空行を削除」は、空の行やスペースとタブだけの行を削除するため、表やログをコピーしたときに残る隙間が消えます。「空白をトリム」は各行の先頭と末尾の空白を削除します。タブや、Web ページや PDF からよく紛れ込むノーブレークスペースも対象です。YAML のブロックや Python のコード片のようにインデントが重要な場合は、トリムをオフにして空行だけを削除してください。

改行コードも処理の過程で統一されます。Windows の CRLF も Unix の LF も正しく行に分割され、結果は常に LF の改行になります。そのため、Excel や Windows のテキストファイルからコピーしたリストを、シェルスクリプト、.gitignore ファイル、設定ファイルに貼り付ける前に整える手早い方法として使えます。長いリストは「ダウンロード」で結果を lines.txt として保存できます。

うまく動かない、または結果がおかしいですか? このツールの問題を報告