我有一个很大的哈希列表。我需要找出哪些只出现一次,因为大多数都是重复的。
例如:最后一行238db2.....
只出现一次
ac6b51055fdac5b92934699d5b07db78
ac6b51055fdac5b92934699d5b07db78
7f5417a85a63967d8bba72496faa997a
7f5417a85a63967d8bba72496faa997a
1e78ba685a4919b7cf60a5c60b22ebc2
1e78ba685a4919b7cf60a5c60b22ebc2
238db202693284f7e8838959ba3c80e8
我尝试了以下方法,这些方法只是列出了每个double中的一个,而不仅仅是标识只出现一次的double
foreach ($line in (Get-Content "C:\hashes.txt" | Select-Object -Unique)) {
Write-Host "Line '$line' appears $(($line | Where-Object {$_ -eq $line}).count) time(s)."
}
3条答案
按热度按时间k5ifujac1#
您可以使用Hashtable和StreamReader。
StreamReader逐行读取文件,Hashtable将该行存储为Key,并处于其Value状态$true(如果重复)或$false(如果唯一)
根据您的示例,$result将包含
238db202693284f7e8838959ba3c80e8
0qx6xfy62#
Get-Content
。-File
参数的switch
语句允许高效的逐行处理,并且假定重复项似乎已经“分组在一起”,则可以通过对相同行进行连续计数来检测它们。e0uiprwp3#
要处理非常大的文件,您可以尝试以下操作。
或者这个