如何将Vim的正则表达式捕获组传递给系统命令?

时间:2017-05-15 14:34:43

标签: regex vim system

我有一些看起来像这样的数据:

6000.10c 1.2345E6

我可以为Vim写一个正则表达式来捕捉'重要的'部分:

/6000.10c\s\+\(\S\+\)

这会将数字部分捕获到第一组中。我想要做的是然后将捕获的字符串传递给系统命令,该命令将对结果执行某些操作并返回放入Vim的字符串。

如何将正则表达式捕获的组发送到系统命令?

1 个答案:

答案 0 :(得分:2)

这是一个例子,awk实际上不是必须的,它只是用于显示system()

s/\v6000.10c\s+\zs(\S+)/\=system("awk '{print $0*2}' <<<". submatch(1))/

会改变:

6000.10c 1.2345E6

成:

6000.10c 2469000