テキストの重複排除と並べ替えツールの説明
集めたメールの一覧に重複が山ほどある、システムから書き出した ID の順序がばらばら、キーワード表を長さ順に並べ直したい。こうした手作業はコマンド 1 行で片付くこともありますが、誰もがいつでも端末を開けるわけではありません。本ツールはその操作をチェックボックスにしました。
できる 6 つのこと
- 重複排除:完全に同じ行は最初に現れた 1 行だけを残します。大文字小文字を無視する設定にすると、
Appleとappleが同じものとして扱われます。 - 並べ替え:9 種類の方法を用意しており、日常のほとんどの要件をカバーします。
- シャッフル:順序をランダムに並べ替えます。抽選、ランダムなグループ分け、無作為抽出に使えます。
- 大文字小文字の変換:すべて大文字、すべて小文字、先頭のみ大文字、各単語の先頭を大文字。
- 空白の削除:各行の前後のスペースとタブを除去します。Web ページや表からコピーしたデータは行末に見えない空白が潜んでいることが多く、重複排除が効かない原因になります。実はこの工程が肝心なことも多いです。
- 出現回数の集計:各行の後ろに出現回数を付けられるので、本当の重複を見つけやすくなります。
並べ替え方法の違い
並べ替えは単純に見えて複数の基準があり、選び方を間違えると結果も狂います。
- 辞書順:文字ごとに符号値を比べます。弱点は数字で、辞書順では
10が2より前に来ます。文字1が2より小さいからです。 - 自然順:連続する数字を 1 つのまとまりとして比べるので、
2が10より前に来ます。ファイル名、章番号、バージョン番号(v1 v2 v10)は必ずこちらを使ってください。 - 長さ順:短いものが先です。キーワードやタグの整理でよく使います。
- 数値のみ:行全体を数値として扱います。数値に変換できない行は末尾に回ります。
中国語にはもう 1 つ層があります。辞書順は漢字の符号値で比べるため、結果はピンイン順とも画数順とも一致しません。厳密にピンイン順で並べるには専用のツールが必要で、本ツールでは対応できません。
「大文字小文字を無視して重複排除」の隠れた問題
このオプションをオンにすると、Apple、APPLE、apple が 1 件に統合されます。残るのは最初に現れた表記です。
これはメールアドレスを扱うときに重要です。メールアドレスは理論上大文字小文字を区別しませんが、先頭を大文字にする習慣の人も多くいます。一覧に [email protected] と [email protected] が混在しているなら、大文字小文字を無視して統合できます。ただし大文字小文字を区別する識別子(パスワード、Base64、Unix のファイル名など)を扱うときは絶対にオンにしないでください。別物を同じものと誤判定します。
データ整理のおすすめ手順
汚れたデータを整えるなら、次の順序で操作してください。
- 1. 空白を削除。まず行頭と行末の空白を落とします。そうしないと
"apple "と"apple"が別のレコードとして扱われます。 - 2. 空行を削除。空行は重複排除と並べ替えの結果を乱します。
- 3. 大文字小文字を統一。無視したいなら、重複排除のときに無視するより先に変換したほうが徹底できます。
- 4. 重複排除。ここまでの工程を済ませてからなら、結果はきれいになります。
- 5. 並べ替え。最後に並べ替えると見比べて確認しやすくなります。
順序を間違えると結果が劣化します。たとえば先に重複排除をしてから空白を削除すると、「見た目は同じだが実際は違う」レコードが残ってしまいます。
どのくらいの行数を扱えるか
数万行ならまったく問題ありません。ブラウザはテキスト処理が速いです。10 万行を超えると、PC のメモリ次第で引っかかりを感じ始めます。極端に多い場合(数十万行以上)は、やはりコマンドラインツールをおすすめします。sort -u で重複排除して並べ替え、awk '!a[$0]++' で順序を保ったまま重複排除、shuf でシャッフルと、どれも Web ページより効率的です。
データの安全性
処理はすべてブラウザのメモリ内で完結し、ネットワーク要求は一切ありません。F12 で Network パネルを開いて「処理」を押してみてください。要求は 1 件も出ません。電話番号、メールアドレス、顧客名簿を含むデータでは、この点が重要です。
よくある質問
重複排除すると元の順序は変わりますか?
重複排除そのものは順序を崩しません。残るのは最初に現れた位置だからです。並べ替えを「なし」にしておけば、出力の順序は入力と同じで、重複分だけが除かれます。並べ替えも同時に指定すれば、当然ながら並び直されます。
何件削除されたかはわかりますか?
処理が終わると上部のステータスバーに元の行数、重複排除後の行数、削除された件数が表示されます。「出力に出現回数を付ける」をオンにすれば、各行が何回重複していたかもわかります。
中国語の並べ替えがピンイン順にならないのはなぜ?
辞書順が文字の符号値を使うためで、漢字の符号順はピンインとも画数とも対応しません。本ツールが提供するのは符号順で、結果は安定していますがピンイン順としては使えません。ピンイン順が必要なら、ピンインを付けたデータを表計算ソフトで並べ替えてください。
シャッフル結果は再現できますか?
再現できません。押すたびに新しい乱数の起点を使うため、同じ入力でも 2 回の結果は異なります。これがシャッフルとして正しい挙動です。再現できるなら、それはランダムではありません。
列単位の重複排除(CSV の 2 列目だけなど)はできますか?
できません。本ツールは行全体のテキストで比較します。特定の列だけで重複排除したい場合は、その列を単独でコピーして処理するか、表計算ソフトのデータ機能を使ってください。