Linux 使用bash获取特定列的和?
我试图使用bash获取.csv文件第5列的总和,但是我使用的命令始终使我得到零。我正在通过grep管道传输文件以删除列标题行: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 |
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
应该足够了。拥有样本数据肯定会有所帮助。