我在某些行上有一个带有字符串“ERROR”的日志文件。我想删除没有错误的每一行,以便我可以看到需要修复的内容。我打算在 vim 中执行以下操作:
%s/!(错误)//
用空字符串替换非错误行。
我不相信标准正则表达式可以做到这一点,但也许我错了......
使用该:g!
命令删除不匹配的每一行。
:g!/ERROR/d
在 vim 中,您可以对缓冲区中的文本运行任何过滤命令。例如,
:%!grep ERROR
将仅用与给定正则表达式匹配的行替换整个缓冲区。
这不仅仅是有用的grep
,例如,您可以使用 对缓冲区中的行进行排序:%!sort
。V
或者,您可以使用命令标记块然后对任何范围的文本执行相同的操作:!filter-command
(vim 会自动'<,'>
为您填写以指示当前标记的块)。
使用负前瞻有效。
如果在 *nix 上,您可以使用 grep -v 或 awk
awk '!/ERROR/' file | more
在 Windows 机器上,您可以使用 findstr
findstr /v /c:ERROR file | more
否定匹配的正则表达式将使用 ^ 例如。[^E] 将匹配除 E 之外的所有内容。