Linux 使用bash获取特定列的和?

Linux 使用bash获取特定列的和?,linux,bash,awk,Linux,Bash,Awk,我试图使用bash获取.csv文件第5列的总和,但是我使用的命令始终使我得到零。我正在通过grep管道传输文件以删除列标题行: grep -v Header results.csv | awk '{sum += $5} END {print sum}' 我会这样做: tail -n+2 | cut -d, -f5 | awk '{sum+=$1} END {print sum}' 或: (取决于结果是什么更快。)以下是我将如何做到这一点: tail -n+2 | cut -d, -f5 |

我试图使用bash获取.csv文件第5列的总和,但是我使用的命令始终使我得到零。我正在通过grep管道传输文件以删除列标题行:

grep -v Header results.csv | awk '{sum += $5} END {print sum}' 

我会这样做:

tail -n+2 | cut -d, -f5 | awk '{sum+=$1} END {print sum}'
或:


(取决于结果是什么更快。)

以下是我将如何做到这一点:

tail -n+2 | cut -d, -f5 | awk '{sum+=$1} END {print sum}'
或:


(取决于结果是什么更快。)

数据是用空格还是逗号分隔的?如果使用逗号,则需要告诉
awk
在其上拆分:
awk-F,…
。另外,
grep | awk
是一种反模式:您需要:
awk-F,/Header/{next}{sum+=$5}END{print sum}results.csv
(无
grep
)。您可以使用
NR==1
而不是
/Header/
来删除数据文件的第一行。请发布csv文件的示例。数据用逗号分隔。谢谢,当您使用
awk
时,我将提供一个示例输入数据,您确实不需要
grep
,因为
awk
能够完成
grep
通常用于的功能。考虑到您的问题,我可以想象
awk-F,‘NR>1{sum+=$5}END{print sum}'result.csv
应该足够了。有样本数据肯定会有帮助。数据是用空格还是逗号分隔的?如果使用逗号,则需要告诉
awk
在其上拆分:
awk-F,…
。另外,
grep | awk
是一种反模式:您需要:
awk-F,/Header/{next}{sum+=$5}END{print sum}results.csv
(无
grep
)。您可以使用
NR==1
代替
/Header/
删除数据文件的第一行。请张贴csv文件的示例。数据以逗号分隔。谢谢,当您使用
awk
时,我将提供一个示例输入数据,您确实不需要
grep
,因为
awk
能够完成
grep
通常用于的功能。考虑到你的问题,我可以想象
awk-F,'NR>1{sum+=$5}END{print sum}result.csv
应该足够了。拥有样本数据肯定会有所帮助。