我正在处理一个大文本文件,并且需要能够根据行上第 25 个字符的值删除行,即如果它等于 H、K 或 Z。这是否可能,或者仅通过匹配其中一个字母和运行 3 个命令或(甚至更好)所有 3 个命令?非常感谢任何帮助!
问问题
466 次
2 回答
3
您可以使用global查找正则表达式,然后在找到正则表达式的行上执行命令。
在这种情况下,它从行首开始查找任何字符 24 次,如果后面的字符匹配H
,K
或Z
删除该行。(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 回答