【问题标题】:sum columns from different files with delimeter使用分隔符对来自不同文件的列求和
【发布时间】:2016-01-02 07:24:05
【问题描述】:

我遇到了与此处Awk: extract different columns from many different files 所述类似的问题,但在我的情况下,我有很多文件作为输入(可以是 40 个,也可以是 500 个),每个文件都遵循类似的乳胶格式

 #description & value1 & value2
    cut1 & XXX & YYY & ZZZ
    cut2>B & QQQ & TTT & GGG

所以,我想为不同的输入文件总结相同列号下的所有值,所以最后我得到一个新文件,如

cut1 & SUM_XXX & SUM_YYY & SUM_ZZZ
cu2>B & SUM_QQQ & SUM_TTT & SUM_GGG

此外,这些值可以是科学格式。我想在 bash 或 python 中执行此操作。提前致谢!

【问题讨论】:

  • 您可能会发现 python csv module 很有帮助。
  • 您需要的是 1) 读取文件; 2)使用字符'&'分割一行(字符串); 3)总结价值。您可以在 python 中使用 csv 模块,也可以使用内置插件自己完成。无论哪种方式,我认为您在使用 python 时都会少一些困难,所以请尝试一下,让我们知道它是如何进行的。
  • 只需发布一些示例输入和输出,以便我们有机会提出正确的答案...

标签: python bash awk


【解决方案1】:

求救!

如果您只有三列要聚合,则可以这样做

$ awk 'BEGIN{FS=OFS="&"}
            {k=$1;a[k]+=$2;b[k]+=$3;c[k]+=$4} 
         END{for(i in a) print i,a[i],b[i],c[i]}' files*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2019-07-23
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多