2

我正在处理一个大文本文件,并且需要能够根据行上第 25 个字符的值删除行,即如果它等于 H、K 或 Z。这是否可能,或者仅通过匹配其中一个字母和运行 3 个命令或(甚至更好)所有 3 个命令?非常感谢任何帮助!

4

2 回答 2

3

您可以使用global查找正则表达式,然后在找到正则表达式的行上执行命令。

在这种情况下,它从行首开始查找任何字符 24 次,如果后面的字符匹配H,KZ删除该行。(d命令末尾代表删除)。

:g/^.\{24\}[HKZ]/d

编辑:正如 Peter Ricker 指出的那样\%25c也可以。

:g/\%25c[HKZ]/d

\%25c匹配第 25 列,然后从那里执行正则表达式。

\%v如果您想匹配虚拟列,也可以使用。

于 2013-05-22T21:19:25.137 回答
0

您可以尝试以下ex命令:

:if match( "HKZ", strpart( getline("."), 24, 1) ) != -1 | delete | endif
于 2013-05-22T21:26:15.460 回答