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

Vim-如何将参数传递给awk命令,vim,awk,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)}' 但是,参数“3”未传递给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)}'  
但是,参数“3”未传递给awk命令。使用双引号而不是单引号也不起作用


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

注意,这里不需要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以查看发生的情况。

为什么要从编辑器内部而不是简单地从命令行执行此操作?在查看文件时进行分析可能会更容易。使用Excel或类似工具会更容易、更清晰。只是说,……你的命令对我很有效。你试过没有插件:$vim-Nu-NONE吗?您的awk命令是否在Vim之外工作?直接在Vim的命令行模式下?是的,在使用-Nu-NONE选项运行时可以工作。原因可能是什么?什么样的设置可能会导致此错误?
command! -range=% -nargs=1 ColMean echo eval(join(map(getline(<line1>,<line2>), 'split(v:val, ", ")[<args>]'), '+')) / (<line2>-<line1>+1.0)