如何 find/replace 每行中的一个字符

How to find/replace a character in every specific line

假设我有 500,000 行以逗号 (,) 结尾,如下所示:

test,'number',null,
test,'number',null,
test,'number',null,

我想 find/replace 在例如每 50,000 行的末尾加上逗号 (,) 和 (;):

line 1:      test,'number',null,
line 50:     test,'number',null,
line 50,000: test,'number',null;

这可以用 nodepad++ 或 emeditor 来做吗?

提前致谢

  • Ctrl+H
  • 查找内容:^(?:[^\r\n]*,\R){49999}[^\r\n]+\K,$
  • 替换为:;
  • 检查 环绕
  • 检查 正则表达式
  • 全部替换

解释:

^                   # beginning of line
  (?:               # non capture group
    [^\r\n]*        # 0 or more any character but newline
    ,               # a comma
    \R              # any kind of linebreak
  ){49999}          # end group, must appear 49999 times
  [^\r\n]+          # 1 or more non linebreak
  \K                # reset
  ,                 # a comma
$                   # end of line

例如,我有 3 行而不是 50000

截图(之前):

截图(后):

EmEditor 中,您可以 运行 在您的 500,000 行文档处于活动状态时使用此宏。为此,请将此代码另存为 ReplaceEvery50000.jsee,然后 select 来自 Select... 中的此文件 菜单。最后,打开您的 500,000 行文档,并在您的 500,000 行文档处于活动状态时,在 Macros 菜单中 select 运行 .

editor.ExecuteCommandByID(4472);  // ensure non-CSV mode
yLines = document.GetLines();
for( y = 50000; y <= yLines; y += 50000 ) {
    s = document.GetLine( y );
    x = s.length;
    if( s.substr( x - 1, 1 ) == "," ) {
        document.selection.SetActivePoint( eePosLogical, x, y );
        document.selection.SetActivePoint( eePosLogical, x + 1, y, true );
        document.selection.Text = ";";
    }
}