gpt4 book ai didi

bash - 计算多个文件中某个字段的唯一出现次数

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

我收集了大量日志文件,其中每个文件都包含以下形式的记录......

2015-06-07 23:59:53 [uid:123] {success,1} .

对于每个文件,我想计算存在多少个唯一 UID。

所以在这个文件片段中我们看到了 uid 123 和 124 ...

2015-06-07 23:59:53 [uid:123] {success,1}
2015-06-07 23:59:53 [uid:123] {success,1}
2015-06-07 23:59:53 [uid:123] {success,1}
2015-06-07 23:59:53 [uid:124] {success,1}

所以我对该文件的计数结果将是 2

如何使用 bash 和/或 awk 获取数据?

我试过了

cat 20150607.log | awk '{print $3}' | sort | uniq | wc -l

这很好用,但问题是我有太多文件,我不想一个一个地运行上面的命令。

是否有更简单的方法来跨多个文件获取此计数?

最佳答案

ENDFILElength(array) 使用 GNU awk:

awk '{unq[$3]} ENDFILE{print FILENAME, length(unq); delete unq}' *.log

与其他 awks:

awk '
!seen[FILENAME,$3]++ { unq[FILENAME]++ }
END { for (i=1;i<ARGC;i++) print ARGV[i], unq[ARGV[i]]+0 }
' *.log

关于bash - 计算多个文件中某个字段的唯一出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31742536/

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