テキスト行ツール
重複行削除・アルファベット/数値順ソート・反転・シャッフル・トリム。無料、ブラウザ内で処理。
- ブラウザ内で処理
- データはブラウザ外に出ません
- 無料 · 登録不要
WeChat でスキャンしてシェア
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。
活用例
- メールアドレスリストの重複削除
- キーワードリストのアルファベット順整理
- ランダムなサンプリングのためのシャッフル
- ログエントリの逆順表示
各ボタンの動作
どのボタンも入力欄を読み、出力欄に書き込みます。入力は変わりません。複数の処理(トリム → 重複削除 → ソート)を続けるときは、各ステップの間に出力を入力へコピーし直してください。
| ボタン | ルール |
|---|---|
| 重複削除 | 各行の最初の出現を元の順序で残します。大文字小文字や空白も含めて完全一致したときだけ重複とみなします。awk '!seen[$0]++' と同じ結果です |
| A→Z 並び替え / Z→A 並び替え | ブラウザの既定ロケールで String.prototype.localeCompare |
| 数値順 | 各行を parseFloat で読み、数値にならない行は末尾に昇順で並べます |
| 逆順 | 行の順序を反転 |
| シャッフル | ランダムな順序(クリックごとに変わる) |
| 行トリム | 各行の先頭と末尾の空白を削除 |
| 空行削除 | 空の行と空白だけの行を削除 |
例:混在したリストのソートと重複削除
入力(最終行の末尾にスペースが1つあります):
banana
Apple
apple
Cherry
_x
10
9
éclair
Zebra
apple
apple
A→Z 並び替え(ブラウザの言語が英語の場合):
_x
10
9
apple
apple
Apple
apple
banana
Cherry
éclair
Zebra
並びはバイト値ではなくロケールの規則に従います。大文字と小文字が隣り合い、é は e の近くに来ます。比較は数値ではなく文字単位なので 10 が 9 より前です。シェルの LC_ALL=C sort ならバイト順になります:
10
9
Apple
Cherry
Zebra
_x
apple
apple
apple
banana
éclair
同じ入力で重複削除すると apple が1つ消え、apple (末尾スペース付き)は別の行として残ります:
banana
Apple
apple
Cherry
_x
10
9
éclair
Zebra
apple
末尾の空白を区別したくない場合は、先に行トリムして結果を入力に戻してから重複削除します。
例:数値順の読み取り方
1,000
v2
-3
1e3
10px
3
0x10
4
は次のようになります。
-3
0x10
1,000
3
4
10px
1e3
v2
parseFloat は先頭の数値を読み、使えない文字で止まります。0x10 は 0、1,000 は 1、10px は 10、1e3 は 1000 として読まれます。 4 は先頭のスペースを保ったままです。v2 は数字で始まらないので末尾に回ります。
例:全角スペースが混じった名簿
名簿の行末に全角スペース(U+3000)が混じっていると、見た目は同じでも重複削除は別の行として扱います。次の入力では「田中」と「鈴木」の末尾に全角スペースがあります。
田中
佐藤
田中
鈴木
佐藤
重複削除の結果、消えるのは 2 つ目の「佐藤」だけです。
田中
佐藤
田中
鈴木
行トリムは全角スペースも空白として削除します(JavaScript の trim() は U+3000 を空白に含めます)。同じ入力をトリムすると次のようになります。
田中
佐藤
田中
鈴木
佐藤
この結果を入力に戻してから重複削除すると、「田中」「佐藤」「鈴木」の 3 行になります。
田中
佐藤
鈴木
例:漢字の名字は読みの順に並ばない
ブラウザの言語が日本語のとき、A→Z 並び替えはかなを五十音順に並べます。漢字の順序は Unicode CLDR の日本語照合規則(ja.xml の standard)で決まります。この規則に並ぶ漢字 6,355 字は JIS X 0208 の第 1 水準 2,965 字と第 2 水準 3,390 字で、順序も JIS の符号順と同じです(Shift_JIS の符号順と突き合わせて確認)。JIS X 0208 では、第 1 水準は 1 字ごとの代表的な読み(多くは音読み)の五十音順、第 2 水準は部首・画数順に並んでいます。名字としての読みは使われません。名字を並べると次のようになります。
佐藤
鈴木
高橋
田中
伊藤
渡辺
結果:
伊藤
高橋
佐藤
田中
渡辺
鈴木
並びは先頭の漢字の読みの順で、伊(イ)、高(コウ)、佐(サ)、田(デン)、渡(ト)、鈴(レイ)です。そのため「高橋」が「佐藤」より前に、「鈴木」が最後に来て、名字の読み(いとう、さとう、すずき、たかはし、たなか、わたなべ)の順にはなりません。Chrome 152 と Node.js 22(ICU 78.3)の Intl.Collator('ja') で同じ結果になることを確認しています。
第 2 水準の漢字は第 1 水準のすべての漢字のあとに来ます。「齋」「邊」は第 2 水準なので、読みが同じ「斎藤」「渡辺」とは離れます。
佐藤
斎藤
渡辺
渡邊
齋藤
「渡邊」は 2 字目の「邊」(第 2 水準)が「辺」(第 1 水準)より後なので「渡辺」の直後に、「齋藤」は先頭が第 2 水準なので最後に並びます。
名簿を五十音順にしたい場合は、ふりがなの列を並べ替えてから元の名前に対応させてください。ふりがなをひらがなで入力した行なら、次のとおり読みの順に並びます。
いとう
さとう
すずき
たかはし
たなか
わたなべ
コマンドラインでの対応
| 処理 | シェル | このツールとの違い |
|---|---|---|
| 順序を保って重複削除 | awk '!seen[$0]++' file.txt | 同じ結果 |
| 隣接する重複の削除 | sort file.txt | uniq | 出力がソートされる |
| ソート | sort file.txt | LC_COLLATE に従う。LC_ALL=C でバイト順 |
| 数値ソート | sort -n file.txt | 1,000・0x10・1e3 の扱いが異なる |
| 逆順 | tac file.txt(GNU)/ tail -r file.txt(macOS) | 同じ結果 |
| 空行削除 | sed '/^[[:space:]]*$/d' file.txt | 同じ結果 |
| 各行のトリム | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' file.txt | ASCII の空白なら同じ結果 |
制限
- 大文字小文字を無視するモードはありません。必要なら先にテキストケース変換で小文字にしてください。
- 改行(LF)で行を分けます。貼り付けた Windows の改行はブラウザのテキスト欄が LF にそろえます。
- アルファベット順はブラウザの言語設定に左右されるため、アクセント付きや大文字小文字の混じった行は端末によって並びが変わることがあります。
- 行数の上限はなく、ブラウザのメモリが上限です。
FAQ
重複削除はどのように動きますか?
行どうしを完全一致で比べます(大文字と小文字も区別)。同じ行は最初に出てきたものだけを残し、2 回目以降を削除します。残った行の順序は最初に出てきた順のままです。
大文字と小文字は区別されますか?
はい。「Apple」と「apple」は別の行として扱います。区別せずに比べたいときは、先にテキストケース変換ツールで小文字にそろえてください。
数値順はどのように並べますか?
各行を JavaScript の parseFloat で読み、行頭の数値で並べます(10px は 10、1,000 は 1、0x10 は 0 として読みます)。行頭が数値でない行は、文字列の順に並べて末尾に置きます。
行数の上限はありますか?
上限は設けていません。処理はブラウザの中で行うため、ブラウザのメモリが上限になります。
データはサーバーに送信されますか?
送信されません。どのボタンもブラウザのタブの中でテキストを処理し、ツールはテキストをブラウザのストレージに保存しません。ページの統計が記録するのはツール名と押したボタン(deduplicate、sort_asc など)だけで、テキストは含みません。