正则表达式 – 使用Vim将所有*非*匹配的字符串替换为另一个字符串

在解析日志文件时,我经常使用:g!/< string我想保留在日志> / d中以从日志中删除所有不包含感兴趣字符串的行.好吧,现在我想使用这个强大的命令来替换所有与空行不匹配的字符串.

除了我已经使用的命令之外,我几乎找不到关于g!的信息,格式为:g!/< match string> /< cmd>,其中cmd是“ex命令”,或者其中一个vim中使用的命令.

所以我认为可以使用s命令来做到这一点,但我的理解在这方面是有限的.任何人都可以建议如何正确格式化命令?还是有其他工具更适合这项任务吗? (sed / awk?我真的没用过那些,但知道它们非常强大).

一个选择就是在Python中编写实用程序并为其编写实用程序.

首先,您可以使用:v作为快捷方式:g!.我认为,词源来自标准grep命令的-v选项.

是的,你可以使用任何ex命令,包括:s.认情况下,:s作用于单行;将它与:g(或:g!或:v)组合,您可以选择它作用的行.如果我理解正确的话

:v/<string I want to keep>/s/.*//

正是你想要的.你可能想跟进:能乐.

附录:我对这个简短答案的受欢迎程度感到有些惊讶.一个有趣的事情是文档(:help:g然后向下滚动一点)提到:%s / pat / PAT / g作为替代(“两个字符更短!”)到:g / pat / s // PAT /G.我认为这意味着:g / pat / s /曾经比以前更熟悉:%s / pat /.

无耻的插件:更多关于:g和:s,你可能也对我对why :%s/^$//g is not equal to :g/^$/d in vim?的回答感兴趣

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...