-1

我有一个 .mrk 文件,其中包含超过 5,000 条记录,所有记录都包含重复的 001 字段。

我目前的想法是使用 Notepad++、PowerShell 或 VBS,在以 =001 开头的任何行的末尾附加其行号,替换:

=001 20110708095140328

=001 2011070809514032800002

使用记事本++,我可以找到以= 001开头的每一行,使用 (\n=001 .*)\r

但我不知道 Notepad++ 的 Regex 或 TextFX 是否可以替换为行号。

4

2 回答 2

0

作为我提到但无法测试的 TextFX 解决方案的替代方案,有一种方法可以在没有任何插件的情况下使用 Column Editor(Edit->Column Editor 或Alt- C)来做到这一点。

首先,选择要插入行号的列。如果您的行是固定宽度的,您可以直接将其插入到所需的位置,否则我建议插入到第一列。要选择列,请在文件第一行的所需列上按Alt-使用列模式编辑Shift,然后单击最后一行的所需列。您将在选定的行上看到一个宽度为 0 的选择,并且键入字母会在此列的每一行上写上它们。

在这里我们不打算自己写任何东西,而是打开上面提到的列编辑器并选择从 1 开始插入一个数字,以 1 递增。您还需要检查“前导零”复选框,以便数字是固定的-宽度。

如果您从以下内容开始:

bla
bla
X bla
bli
bla
X blu
bli

你最终会得到这个:

1bla
2bla
3X bla
4bli
5bla
6X blu
7bli

此时,您可以使用一两个正则表达式轻松获得您想要的结果:

  • 您想从不以 开头的行中删除行号:使用前瞻=001匹配未跟随的行号=001

  • 如果您的行不是固定宽度,则必须在开头插入行号,并希望将其移动到末尾:使用捕获组分别匹配行号和行的其余部分,并重建该行通过颠倒他们的顺序。

于 2017-04-24T14:29:10.637 回答
0

这在 Notepad++ 中有点棘手。但是,如果您保持耐心,则值得一试。

第 1 步:在 Notepad++ 中打开文件并转到Edit -> Column Editor。快捷方式是Alt+ C

第 2 步:添加以下值。Leading Zeros如果需要,请记住选择。按下OK,你就完成了。

在此处输入图像描述

于 2017-04-24T14:36:16.503 回答