Notepad ++でパイプ区切りの列を並べ替える方法は?


8

以下の方法で.txtファイルのすべての行を再配置しようとしています。しかし、私はそれについてどうやって行くのか私にはわかりません。これはNotepad ++で可能ですか?


アップルから|
apple123@aol.com |オレンジセロリ| celery@aol.com | キャベツ
サンドイッチ| sandwich@aol.com | トルコ


apple|orange|apple123@aol.com
celery|cabbage|celery@aol.com
sandwich|turkey|sandwich@aol.com


私はちょうど私がさえなく、ルックス超便利前に知りませんでした。この発見:メモ帳で編集列を++とTextFXプラグイン
MC10

私はこれを「再配置線」とは呼びません。
オービットのライトネスレース

回答:


15

テキストファイルの列の並べ替え

はい、これはバニラ内で可能Notepad++ですが、前述のとおり、それを行うプラグインもあります。より良い(より堅牢な)アプローチは、コマンドラインのテキスト処理ツールを使用することですが、迅速かつ汚いソリューションが必要な場合は、以下を見つけることができます。

正確な入力を想定(col1|col2|col3、パイプデリミタ、パイプなしcol2):

検索(.*?)\|(.*?)\|(.*)

交換\1|\3|\2

Notepad++2015年1月に建てられたここで私のために動作します。多少野蛮ですが、動作します。

説明:

.* -ゼロから無制限の時間までの任意の文字(改行を除く)に一致します

.*?-上記の任意の文字(改行を除く)に、貪欲ではない方法で一致ます(つまり、できるだけ一致しません)。

(.*)-無地ブラケットは示し捕捉グループ(で使用する上記のを交換し、例えばように\1\2\3など)

\|- \パイプ(|)をエスケープして文字通り一致させる

\1|\3|\2-1番目に一致するグループ、パイプ、3番目に一致するグループ、パイプ、2番目に一致するグループを印刷する


それがあなたを助けてくれて嬉しいです、それが他の人を助けることを願っています:-)それは必要ではありませんが、あなたの問題を解決するなら、チェックマークをクリックして答えを受け入れることもできます-あなたが自由にできない、またはさらに良い答えを待つためにも!
bertieb 2015

あなたは.*非貪欲にする必要はありません、すなわち.*?、多くのバックトラックを避けるために?
Ex Umbris 2015

@ExUmbris:通常、速度が不十分と思われるときに最適化が開始されます
nperson325681

OTOHが?文字を書かないために次善のクエリを故意に書くのはばかげているようです。
オービットのライトネスレース

1
(.*?)|(.*?)|(.*)私のために働く。
Shaz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.