テキスト整形のコツ — 重複削除・ソート・トリムを使いこなす

リストの並べ替え重複行の削除余分な空白の除去——こうした「テキストをそろえる」作業は、データ整理・ログ調査・原稿チェックなど日常のあらゆる場面で発生します。一つひとつは単純でも、「何を同じとみなすか」「どの順で並べるか」という基準を取り違えると結果が変わってしまいます。本記事では行操作の基本テクニックを、つまずきやすいポイントとあわせて整理します。

結論を先に:整形は「trim で基準をそろえる → ソート/重複削除 → 仕上げ」の順で行うと安定します。空白や不可視文字が残ったままだと、見た目が同じでも「別の行」と判定され、重複削除やソートが期待どおりに効きません。

1. 日常で必要になる「テキスト整形」とは

テキスト整形とは、改行で区切られた行の集まりに対して、並べ替え・重複削除・空白除去などの加工を施し、扱いやすい形に整えることです。たとえば次のような場面で必要になります。

いずれも「行という単位をどう扱うか」が共通のテーマです。まずは並べ替えから見ていきます。

2. 行のソート — 昇順・降順と「辞書順 vs 数値順」

ソート(並べ替え)には、小さい順に並べる昇順と、大きい順に並べる降順があります。さらに重要なのが、「文字として並べる(辞書順)」のか「数として並べる(数値順)」のかという違いです。

辞書順は先頭の文字から1文字ずつ文字コードを比べます。そのため数字を含む行では直感に反する並びになりがちです。

入力辞書順(昇順)数値順(昇順)
2102
1010010
1002100

辞書順では「10」「100」が「2」より前に来ます。先頭の文字 12 より小さいと判定されるためで、桁数は考慮されません。番号・バージョン・金額のように数として並べたいときは数値順を選びます。

locale(ロケール)にも注意。辞書順といっても、単純な文字コード順なのか、人間の言語感覚に合わせた順なのかで結果が変わります。たとえば大文字・小文字の扱い(Aa をどう並べるか)や、アクセント付き文字・かな漢字の並びは、ロケール対応の比較(JavaScript なら localeCompare)かどうかで差が出ます。アルファベットだけの単純なケースでは気になりませんが、多言語混在のリストでは比較方式を意識しましょう。

3. 重複行の削除 — 「完全一致」の基準と順序保持

重複削除は、同じ内容の行を1つだけ残して他を消す処理です。ポイントは「何をもって同じ行とみなすか」です。多くのツールは行全体の完全一致を基準にするため、見た目が似ていても次のような違いがあると「別の行」として残ります。

意図どおりに消すには、先に trim で空白をそろえる、大文字小文字を統一するなど、比較の基準を整えてから重複削除をかけるのが確実です。

もう一つの軸が順序の扱いです。重複削除には大きく2つのやり方があります。

uniq「連続した重複」しか消しません。離れた位置にある重複は残るため、sort で先に隣り合わせてから uniq に渡すのが定石です。順序を保ったまま全重複を消したいときは、この方式ではなく「出現順保持」のモードを使います。

4. 空行・前後空白の除去 — trim と不可視文字

trim(トリム)は、各行の先頭と末尾の空白を取り除く処理です。コピー&ペーストの際に紛れ込む余分な空白は、目では見えないのに重複削除やソートの結果を狂わせる代表的な原因です。trim の対象には、半角スペースだけでなく次のような不可視文字も含めると効果的です。

あわせて空行の削除も整形の定番です。段落の区切りで入れた空行や、末尾に並んだ無数の空行は、行数カウントや差分比較のノイズになります。trim で各行を整えてから空行を除くと、内容のある行だけがきれいに残ります。

5. 逆順・シャッフルなどの並べ替え

ソート以外にも、用途に応じた並べ替えがあります。

これらは「内容は変えず、並びだけを変える」操作です。重複削除や trim と組み合わせると、「重複を消してから逆順にする」「空行を取ってからシャッフルする」といった一連の整形を一気に行えます。

6. コマンドライン(sort / uniq)との対応とブラウザツール

ここまでの操作は、Unix 系のコマンドライン(macOS / Linux のターミナル)でも定番として使われてきました。代表的な対応は次のとおりです。

やりたいことコマンド例補足
昇順ソートsort file.txt辞書順。数値順は sort -n
降順ソートsort -r file.txt逆順に並べる
ソート+重複削除sort file.txt | uniq連続重複のみ消えるので sort が前提
逆順(行反転)tac file.txtファイル全体を上下反転
シャッフルshuf file.txtランダムに並べ替え

コマンドラインは大量データやスクリプト化に強い一方、環境構築やオプションの暗記が必要です(uniq が連続重複しか消さない、全角スペースの扱いに注意、など)。ちょっとしたリスト整理であれば、ブラウザ上で貼り付けてボタンを押すだけのオンラインツールが手軽です。インストール不要で、データが手元のブラウザ内だけで処理される点も安心材料になります。

Free Tool Line Tools で行を整形する ブラウザ内でソート・重複削除・trim・逆順・シャッフルをまとめて実行。貼り付けてボタンを押すだけ、データは外部に送信されません。

よくある質問(FAQ)

重複削除はどこまでを「同じ行」とみなすのですか?

多くのツールは行全体の完全一致を基準にします。つまり大文字・小文字、前後の空白、全角・半角の違いがあれば別の行として扱われ、削除されません。意図どおりに重複を消すには、先に前後の空白を除去(trim)したり、大文字小文字をそろえたりして「比較の基準」を整えてから重複削除を行うのが確実です。出現順を保ったまま2回目以降だけを消すモードと、ソートしてから連続する重複だけを消すモードがある点にも注意します。

辞書順と数値順のソートは何が違うのですか?

辞書順(文字列順)は1文字ずつ文字コードで比較するため、「10」より「2」が後ろに来ます(先頭の「1」と「2」を比べて「1」が小さいと判断されるため)。数値順は行を数値として解釈して大小を比べるので、2・10・100 が期待どおりに並びます。番号やバージョン、金額のように数として並べたいときは数値順、ID文字列やキーワードのように文字として並べたいときは辞書順を選びます。

trim(トリム)とは何ですか?

trim は各行の先頭と末尾にある空白文字を取り除く処理です。半角スペースだけでなく、タブや全角スペース、行末に紛れ込んだ復帰文字(CR)なども対象に含めると、見た目では分からない不一致を解消できます。コピー&ペーストで混入した余分な空白や不可視文字は、重複削除やソートの結果を狂わせる原因になるため、整形の最初に trim をかけておくと後工程が安定します。

← 技術ブログ一覧へ戻る