gpt4 book ai didi

bash - 用 awk 对重复的行值求和

转载 作者:行者123 更新时间:2023-11-29 09:06:57 25 4
gpt4 key购买 nike

我有一个具有以下结构的文件:

1486113768 3656
1486113768 6280
1486113769 530912
1486113769 5629824
1486113770 5122176
1486113772 3565920
1486113772 530912
1486113773 9229920
1486113774 4020960
1486113774 4547928

我的目标是去除第一列中的重复值,对第二列中的值求和并使用新列值更新该行:根据上面的输入,工作输出将是:

1486113768 9936      # 3656 + 6280
1486113769 6160736 # 530912 + 5629824
1486113770 5122176 # ...
1486113772 4096832
1486113773 9229920
1486113774 8568888

我知道 cutuniq:直到现在我设法在第一列中找到重复值:

cut -d " " -f 1 file.log | uniq -d

1486113768
1486113769
1486113772
1486113774

是否有“awk 方式”来实现我的目标?我知道它是非常强大和简洁的工具:我之前用过它

awk '{print $2 " " $3 >> $1".log"}' log.txt

扫描 log.txt 中的所有行并创建一个以 $1 为名称的 .log 文件,并用 $2 和 $3 值填充它,所有这些都在一个 bash 行中(让 read 循环见鬼去吧! );有没有一种方法可以找到第一列的重复项,对第二列的值求和并重写删除重复项的行并打印第二列的结果总和?

最佳答案

使用 Awk 如下,

awk '{ seen[$1] += $2 } END { for (i in seen) print i, seen[i] }' file1
1486113768 9936
1486113769 6160736
1486113770 5122176
1486113772 4096832
1486113773 9229920
1486113774 8568888

{seen[$1]+=$2} 创建一个散列图,其中 $1 被视为索引值,总和仅针对那些唯一项递增来自文件中的 $1

关于bash - 用 awk 对重复的行值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42024296/

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