Vim - 如何将参数传递给awk命令

时间:2017-06-01 02:06:23

标签: vim awk

我有以下简单的csv文件:

sno, name , age, gender
1 , abc, 30, M
2 , xyz, 60, F
3, def, 30, M

我想使用awk来查找给定列的平均值。我试过以下代码:

command -nargs=1 Colmean %!awk -F',' '{ total += $<args>} END { print total/(NR-1)}'  

使用如下:

:Colmean 3

但是,参数'3'没有传递给awk命令。使用双引号而不是单引号也不起作用。

问题出在哪里?如何解决?谢谢。

1 个答案:

答案 0 :(得分:1)

注意,这里你不需要awk:

command! -range=% -nargs=1 ColMean echo eval(join(map(getline(<line1>,<line2>), 'split(v:val, ", ")[<args>]'), '+')) / (<line2>-<line1>+1.0)

回到你的问题,命令映射可能会改变你真正执行的内容。您可以在缓冲区上尝试:debug 2,$ColMean 3,看看发生了什么。