如何让Linux uniq命令显示所有重复行及对应重复次数
解决方法:显示重复次数并保留所有重复行
uniq无法同时实现显示重复计数和打印所有重复行的需求,你可以用awk来达成目标:
实现命令
printf 'AAAA XXXX\nAAAA YYYY\nBBBB ZZZZ' | awk '{arr[$1]++} END {for (i in arr) cnt[i]=arr[i]} {print cnt[$1], $0}'
输出结果
2 AAAA XXXX 2 AAAA YYYY 1 BBBB ZZZZ
原理说明
- 首次遍历所有行,通过
arr[$1]++统计第一列(哈希值)的出现次数 - 遍历结束后,将统计结果存入
cnt数组备用 - 再次遍历每行,输出对应哈希的总计数加上整行内容
适配MD5哈希+文件路径的实际场景
如果你的输入是md5sum命令生成的格式(MD5在前、文件路径在后),直接管道接入即可:
md5sum /path/to/target/files/* | awk '{arr[$1]++} END {for (i in arr) cnt[i]=arr[i]} {print cnt[$1], $0}'
这样就能同时看到每个重复哈希的总次数,以及对应的所有文件路径,方便定位重复内容的文件。
内容的提问来源于stack exchange,提问作者midnite
相关产品推荐
相关产品推荐

