我正在使用 EmEditor 进行一些文本处理,因为我正在处理的文件是一个大文件。我正在使用正则表达式一次选择一列,同时搜索一个字符串。
我目前正在使用正则表达式代码突出显示不包含我正在搜索的字符串的行。但我需要一个正则表达式代码,它只能突出显示不包含我正在搜索的字符串的列(一次一列)的内容。
例如,我目前正在使用以下正则表达式代码突出显示不包含字符串的行12345
^((?!12345).)*$
但是,我正在寻找一个正则表达式代码,可以突出显示不包含字符串 say 的第 10 列12345
并替换其他同一列的内容与我选择的字符。我正在寻找的字符串每次都不同,并且列每次都不同。
我的文件包含以下内容,我12345
在第一列中搜索:
12345,6457,789
4568,21231,657
查找后所需的输出12345
是在这种情况下选择/标记第一列的内容是123
and 4568
。一旦选择/标记了这些,我就可以使用 EmEditor 中的查找和替换选项将它们替换为我选择的字符。第二个例子,使用上面我456
在第三列中搜索的相同示例。查找后所需的输出456
是在这种情况下选择/标记了第三列的内容是789
和657
。如果有一个正则表达式代码,它有一个可修改的列位置和(可修改的)字符串,我正在寻找类似于awk
代码的东西,例如,awk $1
或者awk ($1,$3)
一个可修改的列位置。
感谢您的友好回复@nonForgivingJesus。我会尝试 Vim,因为它看起来很有希望。是否有可能将匹配项替换为“a”,而将不匹配的内容向右移动,同时将其余列向右移动但保持顶行不变并将第 1 列中的空白替换为“b”?例如,
12345,6457,789,21231,657
6457,21231,657
12345,789,21231
查找 12345 时的输出应为:
a,6457,789,21231,657
b,6457,21231,657
a,789,21231
查找 6457 时的输出应为:
a,a,789,21231,657
b,a,21231,657
a,b,789,21231
查找 789、21231 和 657 后,最终输出应如下所示:
a,a,a,a,a
b,a,b,a,a
a,b,a,a,b,
谢谢。