查找唯一名称的频率

查找唯一名称的频率

我有包含用户名的压缩 csv(.csv.gz)文件的子文件夹,我正在尝试查找用户名的频率。

以下 bash 管道为我提供了顶级用户。

for subfolder in folder; do gunzip -rc $subfolder | cut -d, -f1 | sort | uniq -c | sort -nr | head; done

但是,当子文件夹中有很多大文件时,速度非常慢。是否有更有效的 bash 脚本用于此目的?

答案1

根据唯一用户的数量,您可以让自己awk完成繁重的工作(在读取重复条目时对其进行计数,而不进行排序),然后对结果进行排序。它应该会更快(但你仍然需要解压缩所有内容,这需要一些时间):

$ for subfolder in folder; do gunzip -rc $subfolder | awk -F, '{l[$1]++} END {for (i in l) {print l[i],i}}' | sort -rn | head;done

作为参考,您不能使其运行速度超过:

$ for subfolder in folder; do gunzip -rc $subfolder > /dev/null;done

相关内容