如何将 Vim 的正则表达式捕获组传递给系统命令?
How to pass Vim's regex captured groups to system command?
我有一些数据如下所示:
6000.10c 1.2345E6
我可以为 Vim 编写正则表达式来捕获 'important' 部分:
/6000.10c\s\+\(\S\+\)
这会将数字部分捕获到第一组中。我想做的是将这个捕获的字符串传递给一个系统命令,该命令将对结果和 return 一个放入 Vim 的字符串进行处理。
如何将正则表达式捕获的组发送到系统命令?
举个例子,awk其实不是必须的,只是为了显示 system()
:
s/\v6000.10c\s+\zs(\S+)/\=system("awk '{print [=10=]*2}' <<<". submatch(1))/
将改变:
6000.10c 1.2345E6
进入:
6000.10c 2469000
我有一些数据如下所示:
6000.10c 1.2345E6
我可以为 Vim 编写正则表达式来捕获 'important' 部分:
/6000.10c\s\+\(\S\+\)
这会将数字部分捕获到第一组中。我想做的是将这个捕获的字符串传递给一个系统命令,该命令将对结果和 return 一个放入 Vim 的字符串进行处理。
如何将正则表达式捕获的组发送到系统命令?
举个例子,awk其实不是必须的,只是为了显示 system()
:
s/\v6000.10c\s+\zs(\S+)/\=system("awk '{print [=10=]*2}' <<<". submatch(1))/
将改变:
6000.10c 1.2345E6
进入:
6000.10c 2469000