如何用awk批量求和目录下所有CSV文件的第4列数值
解决多CSV文件第4字段求和问题
你原来的awk命令逻辑存在问题:NR==FNR 仅会处理第一个输入文件,把它的第4字段存入数组,后续每个文件都会和第一个文件的对应行(这里每个文件只有第1行)相加,所以传入第三个文件时会输出两个结果,而非所有值的总和。
要实现所有文件第4字段的累加,只需要简单的累加逻辑即可:
awk -F"," '{sum += $4} END {print sum}' *.txt
命令细节说明:
-F",":设置字段分隔符为逗号,让awk正确识别CSV的列sum += $4:每读取一行(每个文件仅有一行),就将当前行第4字段的值累加到sum变量中END {print sum}:等所有文件处理完成后,输出最终的累加总和*.txt:用通配符匹配目录下所有后缀为txt的文件,如果你的文件是csv后缀,换成*.csv即可;如果目录下只有目标CSV文件,也可以直接用*匹配所有文件
比如你提到的三个文件示例,执行这个命令会直接输出1647,完全符合预期。
内容的提问来源于stack exchange,提问作者Slug
相关产品推荐
相关产品推荐

