【问题标题】:How to sum a certain amount of values from a CSV file?如何从 CSV 文件中汇总一定数量的值?
【发布时间】:2018-08-15 20:55:19
【问题描述】:

在我的 Ubuntu 18.04 机器上,我得到了一个如下所示的 CSV 文件:

frame,0.291667,2880,,,
frame,0.333333,4569,,,
frame,0.375000,4605,,,
frame,0.416667,4715,,,
frame,0.458333,4804,,,
frame,0.500000,4939,,,

等等……

LibreOffice Calc 中以逗号分隔 显然看起来像这样:

  | A     | B        | C     
1 | frame | 0.291667 | 2880 
2 | frame | 0.333333 | 4569 
3 | frame | 0.375000 | 4605
4 | frame | 0.416667 | 4715
5 | frame | 0.458333 | 4804
6 | frame | 0.500000 | 4939

现在我想添加第三列的 n 个值的数量。例如,将值 C1 添加到 C3 (C1:C3),然后将 C4 添加到 C6 (C4:C6)。

如果我要在 LibreOffice Calc 中这样做,我会:

=SUM(C1:C3) = 12054
=SUM(C4:C6) = 14459

由于我想自动执行此操作,我需要某种 awk- 命令从 终端 执行此操作。

有什么想法吗?

【问题讨论】:

  • 不,不是。我不想列的所有值。例如,该列有 100 行,但我只想添加前 24 行,然后添加下 24 行,依此类推...
  • 您的样本输入/输出不足以测试解决方案。不要告诉我们您需要一次对 24 行求和,而是告诉我们您需要一次求和 3 行,然后显示输入,例如 9 行以及相关的输出。我们需要您提供一些简洁(即我们不想看到 100 行输入!),我们可以针对 .如果不清楚,请参阅How to Ask
  • 谢谢,编辑了我的问题!
  • 谢谢。我删除了每个人都必须删除才能使用它进行测试的虚假“...”。

标签: csv awk


【解决方案1】:
$ awk -F, '{sum+=$3} NR%3==0{print sum; sum=0}' file
12054
14458

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    相关资源
    最近更新 更多