gpt4 book ai didi

bash - awk多个文件(加值)结果不按顺序

转载 作者:行者123 更新时间:2023-11-29 09:44:10 24 4
gpt4 key购买 nike

我有很多文件,所有文件的行数都相同,第 1 列(我想保留)中的值也相同。问题是输出改变了顺序。

cat file1.dat
Sep-12 1082
Oct-12 1377
Nov-12 1095
Dec-12 888
Jan-13 1184
Feb-13 1036
Mar-13 895
Apr-13 1207
May-13 1325
Jun-13 1147
Jul-13 1256
Aug-13 1362
Sep-13 1260

cat file2.dat
Sep-12 5185
Oct-12 5707
Nov-12 5427
Dec-12 3321
Jan-13 8093
Feb-13 6000
Mar-13 6348
Apr-13 6921
May-13 6959
Jun-13 6246
Jul-13 6634
Aug-13 6704
Sep-13 6350

.....etc

当我运行时

awk '{a[$1]+=$2}END{for (k in a) print k,a[k]}' dat_files/*.dat

我明白了

May-13 20086
Nov-12 16175
Jun-13 74138
Mar-13 16598
Jan-13 18293
Aug-13 21853
Feb-13 14831
Jul-13 20614
Sep-12 12480
Sep-13 20717
Oct-12 14099
Apr-13 23954
Dec-12 11469

这似乎没有特定的顺序(也不是我想要的)。我希望输出与所有 .dat 文件的顺序相同,即以

开头
Sep-12 (total)
Oct-12 (total)
Nov-12 (total)
etc...

我以为 awk 按顺序读取每个文件中的数据...?任何帮助,将不胜感激。谢谢!

最佳答案

关联数组不保留键插入顺序。大多数语言都是如此。

您可以将列名顺序存储在另一个数组中并使用它来打印结果。

awk '
{
s[FNR] += $2
c[FNR] = $1
}

END {
for (i=1; i <= FNR; i++)
print c[i], s[i]
}
' dat_files/*.dat

关于bash - awk多个文件(加值)结果不按顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254088/

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