微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 使用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?的回答感兴趣

原文地址:https://www.jb51.cc/regex/356832.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐