从许多具有 2 列的文件中添加仅一列的每一行的值 - shell 脚本

Add the values of each line of only one column from many files with 2 columns - shell scripting

我有很多具有这种结构的文件,其中有两列数字。我想为我的所有文件添加第二列的每一行值,所以我最终只会得到一个文件。谁能帮忙?希望这个问题足够清楚。谢谢

假设您想要的是每个文件第二列所有值的总和,这对于 awk 来说似乎是一个足够简单的工作:

cat files | awk '{ sum +=  } END { print sum }'

以下内容基于 OP 在上面的评论中提供的信息:

  1. 我们有多个文件,我们必须对每个文件的第二列求和。据我们所知,我们可能有成百上千个不同的文件
  2. 每个文件中的第一列似乎并不重要,我将假设(基于 OP 样本数据)我们在每个输入文件中都有相同的(第一)列

基本思路是从一个空的摘要(文件 tot)开始,paste 每个文件一个接一个 tot 并求和 2 和 4 列(如果存在) ) 到新 tot 文件的第二列。

换句话说...

$ touch tot ; for f in * ; do paste tot ${f} | awk '{ if ( NF > 3 ) { print , + } else { print ,  } }' > tmp ; mv tmp tot ; done 

我确实用 8 个不同的文件对其进行了测试,并且似乎按预期工作。 当然 for f in * 必须更改才能捕获所有且仅捕获我们想要求和的文件。