notepad ++で行の長さでテキストファイルをソートするにはどうすればよいですか?上記のタスクに使用できるプラグインはありますか?
プラグインがない場合、プラグインを自分で書くために最初に読むべき、そしておそらく2番目に読むチュートリアルは何ですか?
notepad ++で行の長さでテキストファイルをソートするにはどうすればよいですか?上記のタスクに使用できるプラグインはありますか?
プラグインがない場合、プラグインを自分で書くために最初に読むべき、そしておそらく2番目に読むチュートリアルは何ですか?
回答:
この答えは、YouTubeのビデオに触発されています。重要な場合は、元のソート順を維持するように更新されました。
Notepad ++には、選択した行をアルファベット順に並べ替える組み込みのTextFXツールがあります。このツールをハイジャックして、各行の左側にスペースを配置し、すべての行が同じ長さであることを確認することにより、行の長さでソートできます。
スペースは文字として扱われ、「i」の前に来るため、「The Zoo」は「Their House」の前にアルファベット順になります。__X
(アンダースコアが実際にスペースであるとする)は、同様にアルファベット順になり_XX
ます。この答えの考えはスペースと行番号を加えて、それ__________092dog
が上で分類されること_003alligator
です。
サンプルデータとして以下を使用します。
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
手順1.行番号を追加します。
(barlopによって追加された注意-このステップに関する読者への注意、これらの行番号に従ってソートするのではなく、行の長さに従ってソートします。しかし、行番号を追加する理由は、自然順序を知っているので、たとえば、2行以上の行の長さが等しい場合、それらの行をその自然順序に従ってソートできます)
テキストファイルにデータのみが含まれている場合、テキストカーソル(垂直線)をファイルの最初の位置に配置します。次に、Edit
メニューでColumn Editor...
(Alt+ C)を選択します。[挿入する番号]を選択し、1から始めて1ずつ増やし、先行ゼロを含めます。最短の文字列から最長の文字列にソートする場合、これにより元の順序が保持されることに注意してください。最長から最短に並べ替える場合は、最初にすべての行を反転します。
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
ステップ2.すべての行に先行スペースを埋め込みます。
テキストカーソル(垂直線)をファイルの最初の位置に置きます。次に、Edit
メニューでColumn Editor...
(Alt+ C)を選択します。最短のデータ行が最長のデータ行の長さまでパディングされるように、十分なスペースを挿入します。最短行に4文字、最長44行がある場合は、少なくとも40スペースを挿入してください。
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
ステップ3.線を一定の長さに切り取ります。
次の正規表現の検索/置換(Ctrl+ H)を使用して、最も長いデータ行の長さ以上の右側の文字に一致させます。
^.*(.{50})$
すべてをに置き換えます$1
。これにより、各行の右端の50文字を除くすべてがトリミングされます。データが50より長い(または短い)場合{50}
は、正規表現でを調整します。
(barlopによって追加された注-ここでのアイデアは、最も短い行の先頭に最もスペースがあることです)
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
ステップ4.行をソートします。
すべてのテキスト(Ctrl+ A)を選択します。TextFXメニューから、に進みますText FX > TextFX Tools > Sort lines case sensitive (at column)
。これで、データは最短から最長の長さの順になります。それらを最長から最短に並べたい場合は、Text FX > TextFX Tools > + Sort ascending
ソートする前にオプションのチェックを外してください。行番号も逆になっていることに注意してください。
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
ステップ5.先行スペースを削除します。
別の正規表現の検索/置換(Ctrl+ H)を使用して、先頭のスペースを一致させます。
^ *\d{4}
これは、キャレットとアスタリスクの間のスペースです。すべてを何も置き換えません。4桁の行番号がある場合、すべての先行スペースと挿入された行番号が削除されます。を{4}
行番号の正しい桁数に置き換えます。
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
大きい
Notepad ++のマクロ機能を使用して上記の手順を記録しましたが、機能しません。どのステップが失敗するのかわかりませんが、その理由を診断していません。繰り返し行う場合は、おそらくAutoHotKeyを使用してこれを自動化できます。
^ *\d{5}
に、行番号に使用された数字の桁数を使用します。
いいえ、ありません。最も近いのはTextFxプラグインですが、それは行の長さではなく文字ベースの並べ替えです。あなたの最善の策は、テキストをスプレッドシートに投げて、そこでソートすることです(LEN()
関数を使用して別個の計算列を使用)。
CSVファイルでN ++のSQLを使用できます!たとえば、次の場合:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
、コマンドselect * from data order by length(col1) desc
を実行して降順に並べ替えることができます。「データ」は現在のファイルを意味します。"col1"-最初の(および最後の)列の名前。
残念ながら、おそらく1列のテキストの行の後に区切り文字を放棄できないバグがあります。