首页 > 解决方案 > 我可以在 Vim 中搜索和替换为数学表达式吗?

问题描述

我有以下一行:

set_property LOC DSP48E2_X0Y0 [get_cells{name[0].dut/mm1/dsp_chain[0].dsp_inst}];

我想替换DSP48E2_X0Y{number}DSP48E2_X0Y{number+5} 我在 Stack Overflow 上关注了一个线程,并尝试使用 awk 命令:

echo "set_property LOC DSP48E2_X0Y0   [get_cells {name[0].dut/mm1/dsp_chain[0].dsp_inst}];" | awk `{ printf "%s %s %s_X%dY%d", $1, $2, $3, $4, $5+5}`

但我收到错误:

bad math expression: operand expected at `,'

标签: vim

解决方案


要回答标题中的问题:是的,只需以\=.

在你的情况下,

:s/DSP48E2_X0Y\zs\d\+/\=submatch(0)+5/

会做的。

(不知道那些 awk 的东西是关于什么的。)


推荐阅读