gpt4 book ai didi

bash - 将多个文件汇总为 1 个输出文件

转载 作者:行者123 更新时间:2023-12-05 09:01:35 26 4
gpt4 key购买 nike

希望有人能够为我指明正确的方向。我是 bash 脚本的新手,我相信 awk 应该能够解决这个问题。

我有多个文件要处理,$1 中的数据将始终保持不变,分隔符只是一个空格,$2 中的数字会改变.

我希望将多个文件中的 $2 相加并输出到一个新文件中。示例如下:

File1.txt

DATA:TEST0 20
DATA:TEST1 4
DATA:TEST2 39
DATA:TEST3 11

File2.txt

DATA:TEST0 2
DATA:TEST1 0
DATA:TEST2 26
DATA:TEST3 9

File3.txt

DATA:TEST0 44
DATA:TEST1 16
DATA:TEST2 21
DATA:TEST3 7

Output.txt 是我希望从上述文件中获得的输出

DATA:TEST0 66
DATA:TEST1 20
DATA:TEST2 86
DATA:TEST3 27

下面的方法我都试过了,还是不行

粘贴文件* | awk '{$2=$1+$2}1' | tee 输出.txt

如有任何建议,我们将不胜感激。提前致谢

最佳答案

paste 将文件并排放置,您不需要它。只需将所有文件名作为参数提供给 awk,它就会按顺序处理它们。

对第 1 列中每个关键字的总和使用关联数组。

awk '{sum[$1] += $2} END {for (i in sum) print i, sum[i]}' file* | tee output.txt

要保持文件中的原始顺序,您可以返回使用粘贴。然后你必须循环每隔一列,添加到一个总和变量。

paste file* | awk '{sum=0; for (i = 2; i <= NF; i+=2) sum += $i; print($1, sum)' | tee output.txt

关于bash - 将多个文件汇总为 1 个输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73055946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com