多年来,我在谷歌上搜索了几次,但没有找到一个好的解决方案,所以我放弃并询问。
我希望能够删除所有与模式不匹配的单词和标点符号。
所以说我有这个清单
R61,1,BWRBW0471,1
R14,1,BWRBW0471,1
R162,1,BWRBN0471,1
R61 ,1,BWRBN0471,1
R61 ,1,BWRBN0471,1
R61 ,1,BWRBN0471,1
Run Code Online (Sandbox Code Playgroud)
我想删除所有内容,但 bwrb.*471,[0-9] 所以我只剩下
BWRBW0471,1
BWRBW0471,1
BWRBW0471,1
BWRBW0471,1
BWRBW0471,1
BWRBW0471,1
Run Code Online (Sandbox Code Playgroud)
有没有一个简单的 VIM 命令可以完成?
谢谢。
rom*_*inl 15
:%s/\v(.*)(bwrb.*471,\d)(.*)/\2
Run Code Online (Sandbox Code Playgroud)
用你的样品做你想做的事。如果您的现实世界需求更复杂,则可能需要对其进行更改。
基本上,模式匹配整行,但我们使用分组来区分我们想要的和我们不想要的。我们得到三组,“在我们想要的之前”,“我们想要的”,“在我们想要的之后”,我们用第二组替换整行,注意到\1。
一步步:
%s/
替换是在整个文件上完成的。
\v
“非常神奇”标志对于限制反斜杠的数量和提高易读性很有用。
(.*)
第一组包含任意数量的任意字符。锚定到行的开始暗示,使其符合什么是之前你想要什么。它将\(.*\)没有“非常神奇”的标志。
(bwrb.*471,\d)
这是第二组:你的模式。我唯一改变的是[0-9]我用等效但更短的\d.
(.*)
第三组包含任意数量的任何字符,直到行尾。
/\2
替换零件仅包含在第二组中。
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |