【问题标题】:I need to sum all the values in a column across multiple files我需要对多个文件中一列中的所有值求和
【发布时间】:2023-02-18 00:59:32
【问题描述】:

我有一个包含多个 csv 文本文件的目录,每个文件都有一行格式:

field1,field2,field3,560

我需要输出目录中所有文件(可以是数百或数千个文件)的第四个字段的总和。例如:

file1.txt
field1,field2,field3,560

file2.txt
field1,field2,field3,415

file3.txt
field1,field2,field3,672

输出只是: 1647

我一直在尝试一些不同的事情,最有希望的是我在此处找到的 awk 命令以回答另一个用户的问题。它并不能完全满足我的需要,而且我是一个 awk 新手,所以我不确定如何修改它以达到我的目的:

awk -F"," 'NR==FNR{a[NR]=$4;next}{print $4+a[FNR]:' file1.txt file2.txt

这会正确输出 975

但是,如果我尝试将第 3 个文件传递给它,而不是从所有 3 个文件中添加字段 4,它会将 file1 添加到 file2,然后将 file1 添加到 file3:

awk -F"," 'NR==FNR{a[NR]=$4;next}{print $4+a[FNR]:' file1.txt file2.txt file3.txt
975
1232

任何人都可以告诉我如何修改这个 awk 语句以接受两个以上的文件,或者理想情况下因为有数千个文件要总结,一个 * 输出目录中所有文件的第四个字段的总和?

感谢您的时间和协助。

【问题讨论】:

    标签: awk


    【解决方案1】:

    开始了:

    $ cat file{1,2,3} | awk -F"," '{count+=$4;next}END{print count}' 
    1647
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多