在Notepad ++或UltraEdit中为每一行移动一行的开头

时间:2014-07-29 13:27:24

标签: replace notepad++ ultraedit

我有一个问题,使用Notepad ++或UltraEdit复制我的文件的第一或第二列,并将它们添加到最后。如果我的文件有常规列,问题会很容易,但事实并非如此。这是它的样子:

18,-8 22 30.82,70 2 34.25,
19,-8 23 10,70 1 42.97,
20,-8 23 40.42,700 51.85,
21,-8 24 10.1,70 0 0.89,
22,-8 24 40.05,69 59 10.09,
...
1318,-7 27 26.82,78 3 16.1,

我想在每行末尾复制我的身份证号码。我已经尝试过替换工具,但没有找到正确的表达式以便捕获该行的开头。

4 个答案:

答案 0 :(得分:1)

使用Notepad ++

的一种可能的解决方案

假设列以逗号分隔,

您可以录制将执行以下步骤的宏:

  • Home / Pos1 键将插入符号设置为当前行中的第一个位置
  • 搜索,两次(或应将多少列复制到该行的末尾)
  • Shift + Home 选择从行首开始到插入符号的文本
  • Ctrl + C
  • 复制所选文本
  • 结束将插入符号设置为当前行的结尾
  • Ctrl + V
  • 将复制的文本粘贴到行尾
  • (向下箭头)将插入符号移至下一行

运行宏,直到到达文件末尾。

PS:在运行宏之前始终备份数据!

答案 1 :(得分:1)

在正则表达式搜索和替换模式中尝试以下操作:

查找: ^([0-9]*)(.*)$

替换: \1\2\1

说明

^$分别是行的开头和结尾的锚点。

^([0-9]*)从行首开始匹配,直到满足非数字(在您的情况下为逗号)。该 ()通过\1使匹配的表达式可用于替换框中。

(.*)$匹配其他所有内容,直到行尾。同样,括号使匹配的表达式可访问,这次是通过\2

所以,既然你想要一行末尾第一列的副本,你可以这样做:

替换:\1\2\1

相反,如果你想移动第一列到最后,你可能想要

查找:^([0-9]*),(.*)$

替换: \2\1

请注意查找表达式中添加的逗号。没有它,第一列数据后面的逗号将作为(.*)表达式的一部分进行匹配,因此当您的行被\2\1替换时,它将保留在行的开头。

编辑糟糕,其他人已经打败了我(基本上)相同的答案,但我希望这些解释仍然有用。

答案 2 :(得分:0)

找到:^([0-9]*)(.*)

替换为:\2\1

Screenshot

希望这能为你服务。

答案 3 :(得分:0)

在Notepad ++中:

打开“替换”对话框:搜索 - >替换...

将第一个字段复制到结尾:

Find what: ^([0-9]+,)(.*)$
Replace with: \1\2\1

将第一个字段移到最后:

Find what: ^([0-9]+,)(.*)$
Replace with: \2\1