MarcEdit追加001字段

时间:2017-04-24 13:53:07

标签: regex powershell append notepad++ richtextfx

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

我目前的想法是使用Notepad ++,PowerShell或VBS来追加以@ 001开头的任何行的末尾及其行号,替换为:

=001 20110708095140328

=001 2011070809514032800002

使用Notepad ++我能够找到以= 001开头的每一行,使用 (\n=001 .*)\r

但我不知道Notepad ++的正则表达式或TextFX是否可以替换为行号。

2 个答案:

答案 0 :(得分:0)

作为我提到但无法测试的TextFX解决方案的替代方法,有一种方法可以在没有任何插件的情况下使用列编辑器(编辑 - >列编辑器或 Alt - ç)。

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

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

如果您从以下内容开始:

bla
bla
X bla
bli
bla
X blu
bli

你最终得到这个:

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

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

  • 您要从不以=001开头的行中删除行号:使用前瞻

    <匹配未跟=001的行号< / LI>
  • 如果您的行没有固定宽度,则必须在行首处插入行号,并希望将其移至结尾:使用捕获组分别匹配行号和其余行号该行,并通过反转它们的顺序重建该行。

答案 1 :(得分:0)

这在Notepad ++中有点棘手。但如果你保持耐心,那就值得一试。

第1步:在Notepad ++中打开文件,然后转到编辑 - &gt;列编辑器。快捷方式是 Alt + C

第2步:添加以下值。如果您愿意,请务必选择Leading Zeros。按确定即可完成。

enter image description here