我有以下简单的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命令。使用双引号而不是单引号也不起作用。
问题出在哪里?如何解决?谢谢。
答案 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
,看看发生了什么。