如何在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插件在Notepad ++中编辑列
MC10

我不会称其为“重新定位线”。
Lightness Races in Orbit

Answers:


15

重新排序文本文件中的列

是的,这在vanilla中是可能的Notepad++,尽管如前所述,也有插件可以做到这一点。更好(更健壮)的方法可能是使用一些命令行文本处理工具,但是如果您需要一种快捷的解决方案,则可以在下面找到:

假设您输入的是精确值(col1|col2|col3,管道直径,无管道输入col2):

查找(.*?)\|(.*?)\|(.*)

更换\1|\3|\2

Notepad++2015年1月建成,在这里为我工作。有点古怪,但它可以工作。

说明:

.* -匹配零到无限次之间的任何字符(换行符除外)

.*?-以非贪婪的方式匹配上述任何字符(换行符除外)(即,尽可能少地匹配)

(.*)-普通的括号内的捕获组的上述(在使用中更换为例如\1\2\3等等)

\|-对\管道(|)进行转义以从字面上进行匹配

\1|\3|\2-打印第一匹配组,管道,第三匹配组,管道,第二匹配组


我很高兴,很高兴它能为您提供帮助,并希望它能对其他人有所帮助:-)没必要,但是如果解决了您的问题,您也可以单击对勾接受一个答案-您可以随意选择,或者也要等待其他更好的答案!
bertieb

您是否不需要设为.*非贪婪,即.*?避免大量回溯?
Ex Umbris

@ExUmbris:通常,当速度似乎不足时,优化就会开始
nperson325681,2015年

OTOH为不写?字符而故意编写次优查询似乎很愚蠢。
Lightness Races in Orbit

1
(.*?)|(.*?)|(.*)为我工作。
沙兹(Shaz)2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.