我有一个XML文件,我想对其进行一些更改.例如,我想在Vim中打开文件并运行查找并替换memory="..."属性的所有实例,memory="24G"但仅当元素来自name="node-0...".这是一个例子:
process name="node-0-3" numaNode="3" memory="14G" logConfig="logback-shards.xml"
process name="node-0-4" numaNode="4" memory="34G" logConfig="logback-shards.xml"
process name="node-0-5" numaNode="5" memory="44G" logConfig="logback-shards.xml"
Run Code Online (Sandbox Code Playgroud)
用...来代替
process name="node-0-3" numaNode="3" memory="24G" logConfig="logback-shards.xml"
process name="node-0-4" numaNode="4" memory="24G" logConfig="logback-shards.xml"
process name="node-0-5" numaNode="5" memory="24G" logConfig="logback-shards.xml"
Run Code Online (Sandbox Code Playgroud)
我怎么能在Vim中做到这一点?
:g/node-0/s/memory="\zs\d\{2\}\u\ze"/24G
Run Code Online (Sandbox Code Playgroud)
一步步:
:g/node-0
使用该:global命令查找包含的所有行node-0
s/memory="\zs\d\{2\}\u\ze"/24G
找 memory="
通过在这里开始比赛,让它脱离实际比赛 \zs
匹配两个数字后跟一个大写字母 \d\{2\}\u
实际比赛在此结束 \ze
遗漏了收尾双引号.
替换实际匹配 24G
(使用更精确的模式编辑以适应提问者的真实用例)
编辑
使用Ingo的评论:
:g/node-0/s/memory="\zs[^"]*\ze"/24G
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |