gpt4 book ai didi

regex - 使用 Vim 用另一个字符串替换所有 *非* 匹配的字符串

转载 作者:行者123 更新时间:2023-12-04 06:03:21 24 4
gpt4 key购买 nike

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

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

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

另一种选择是直接用 Python 编写一个实用程序来为我做这件事。

最佳答案

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

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

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

正是你想要的。您可能想要跟进 :noh .

附录:我对这个简短的回答如此受欢迎感到有些惊讶。有趣的是,文档( :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? 的回答感兴趣

关于regex - 使用 Vim 用另一个字符串替换所有 *非* 匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com