如何 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 = ";";
}
}
假设我有 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 = ";";
}
}