【问题标题】:Move the beginning of a line at its end for each line in Notepad++ or UltraEdit在 Notepad++ 或 UltraEdit 中将每行的开头移到结尾
【发布时间】:2014-09-20 21:30:04
【问题描述】:

我有一个问题,我使用 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,

我希望将我的身份证号码复制到每行的末尾。我尝试了替换工具,但没有找到正确的表达式来捕捉行首。

【问题讨论】:

    标签: replace notepad++ ultraedit


    【解决方案1】:

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

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

    替换: \1\2\1

    说明

    ^$ 分别是行首和行尾的锚点。

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

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

    因此,由于您想要在行尾复制第一列,您可以这样做:

    替换:\1\2\1

    如果您想将第一列移动到末尾,您可能需要这样做

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

    替换: \2\1

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

    编辑糟糕,其他人已经击败了我(基本上)相同的答案,但我希望这个解释是有帮助的。

    【讨论】:

      【解决方案2】:

      在记事本++中:

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

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

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

      将第一个字段移到末尾:

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

      【讨论】:

        【解决方案3】:

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

        替换为:\2\1

        希望这对你有用。

        【讨论】:

          【解决方案4】:

          使用 Notepad++ 的一种可能解决方案

          假设列用逗号分隔,

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

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

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

          PS:请务必在运行宏之前备份您的数据!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-12
            • 2021-01-27
            • 1970-01-01
            • 2018-08-22
            相关资源
            最近更新 更多