Regex MarcEdit追加001字段

Regex MarcEdit追加001字段,regex,powershell,append,notepad++,richtextfx,Regex,Powershell,Append,Notepad++,Richtextfx,我有一个.mrk文件,其中包含5000多条记录,所有记录都有重复的001字段 我目前的想法是使用Notepad++、PowerShell或VBS,在以=001开头的任何行的末尾附加行号,替换为: =001 20110708095140328 与 =001 2011070809514032800002 使用记事本++我能够找到以=001开头的每一行,使用 (\n=001.*)\r 但是我不知道Notepad++的Regex或TextFX是否可以替换为行号。作为我提到但无法测试的TextFX解决方案

我有一个.mrk文件,其中包含5000多条记录,所有记录都有重复的001字段

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

=001 20110708095140328

=001 2011070809514032800002

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


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

作为我提到但无法测试的TextFX解决方案的替代方案,有一种方法可以做到这一点,而无需任何带有列编辑器的插件(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
    的行号

  • 如果线条的宽度不是固定的,则必须在开始处插入行号,并希望将其移动到结尾:使用“捕捉组”分别匹配行号和线条的其余部分,然后通过颠倒顺序重建线条


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

      步骤1:在记事本++中打开文件,然后转到编辑->列编辑器。快捷方式是Alt+C

      步骤2:添加以下值。如果需要,请记住选择前导零。按OK,您就完成了


      忽略我之前的评论,TextFX似乎实现了这一点。我目前正在查看法语文档,我将尝试找到一个英语文档并发布一个答案。Welp我找不到任何文档,也无法安装TextFX来尝试解决方案这是我提到的法语文档,如果你向下滚动,你会发现有一个“插入行号”功能。没有额外的描述,所以我猜这是一个没有参数的操作,它将在每行的开头插入行号。然后,您必须使用正则表达式1)从不以
      =001
      开头的行中删除此行号,2)将行号移动到以
      =001
      开头的行的末尾以尊重您的格式。为什么不连续替换重复的
      001
      ?我的意思是像
      001
      002
      等等?这可以通过编程实现。正则表达式只会帮助模式匹配和替换为固定字符串。Rahul,我不能替换001、002等。这些是Marc标准的“标题”。我也希望避免编码。