如何在TXT文件中找出仅出现一次的唯一哈希行?
找出哈希列表中仅出现一次的哈希值
我有一个大型哈希列表,需要找出其中仅出现一次的哈希值(大部分为重复项)。
示例(最后一行的238db2.....仅出现一次):
ac6b51055fdac5b92934699d5b07db78 ac6b51055fdac5b92934699d5b07db78 7f5417a85a63967d8bba72496faa997a 7f5417a85a63967d8bba72496faa997a 1e78ba685a4919b7cf60a5c60b22ebc2 1e78ba685a4919b7cf60a5c60b22ebc2 238db202693284f7e8838959ba3c80e8
我尝试了以下代码,但它仅列出了每个重复项中的一个,无法识别仅出现一次的哈希值:
foreach ($line in (Get-Content "C:\hashes.txt" | Select-Object -Unique)) { Write-Host "Line '$line' appears $(($line | Where-Object {$_ -eq $line}).count) time(s)." }
正确实现方法
用Group-Object直接对哈希值分组统计,既能高效处理大型列表,又能精准筛选出仅出现一次的哈希:
Get-Content "C:\hashes.txt" | Group-Object | Where-Object { $_.Count -eq 1 } | Select-Object -ExpandProperty Name
原代码问题说明
原代码里的统计逻辑出错了:$line是单个字符串,用它管道到Where-Object只会判断这个字符串是否等于自身,结果永远是1次,根本没去统计它在整个文件里的实际出现次数,所以没法正确识别唯一哈希。
内容的提问来源于stack exchange,提问作者I am Jakoby
相关产品推荐
相关产品推荐

