MarcEdit 附加 001 字段

MarcEdit append 001 field

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

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

=001 20110708095140328

=001 2011070809514032800002

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

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

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

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

这里我们不打算自己写任何东西,而是打开上面提到的列编辑器并选择插入一个从 1 开始的数字,以 1 递增。您还需要选中 "Leading zeros" 复选框这样数字就固定宽度了。

如果您从以下内容开始:

bla
bla
X bla
bli
bla
X blu
bli

你会得到这个:

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

此时你想要的结果可以通过一两个正则表达式轻松获得:

  • 您想从不以 =001 开头的行中删除行号:使用先行 [=14] 匹配不后跟 =001 的行号=]

  • 如果你的行不是固定宽度的,你必须在它们的开头插入行号,并想将它移到末尾:使用捕获组分别匹配行号和行的其余部分,并通过反转它们的顺序来重建行。

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

第 1 步: 在 Notepad++ 中打开文件并转到 编辑 -> 列编辑器。快捷键是 Alt + C.

步骤 2: 添加以下值。如果需要,请记住 select Leading Zeros。按 确定 完成。