找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: awk

[问题求助] [已解决]PowerShell怎样删除大文件中的多余重复行?

[复制链接]
发表于 2013-7-30 13:58:14 | 显示全部楼层
  1. get-content a.txt | sort -unique
复制代码
  1. get-content a.txt | sort | get-unique
复制代码
发表于 2013-9-4 00:08:30 | 显示全部楼层
$hashset=New-Object System.Collections.Generic.HashSet[int]
$duplicateFile="d:\1\duplicate.log"
$uniqueFile="d:\1\unique.log"
$sourceFile="D:\1\u_ex13061100.log"
Get-Content $sourceFile | %{
    if($hashset.add($_.GetHashCode())){
        $_ | Out-File -FilePath $uniqueFile -Append
    }else {
        $_ | Out-File  -FilePath $duplicateFile -Append
    }
}

评分

参与人数 1技术 +1 收起 理由
awk + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-9-5 14:14:49 | 显示全部楼层
回复 17# luke


    正解。感谢!
发表于 2013-9-5 21:34:37 | 显示全部楼层
17楼的代码显然不行,实验后更不行。
1 貌似不应该用Get-Content。我想,或许,应该用streamreader。
2 貌似不应该用out-file -append。我想,或许,应该用stringbuilder
3 绝对不应该用string.gethashcode()  。具体原因参见 http://msdn.microsoft.com/zh-cn/ ... ng.gethashcode.aspx

说明
如果两个字符串对象相等,则 GetHashCode 方法返回相同的值。 但是,每个唯一的字符串值并没有唯一的哈希代码值。 不同的字符串可以返回相同的哈希代码。
有关哈希代码的更多信息,请参见 Object.GetHashCode。
对调用者的说明
GetHashCode  返回的值与平台相关。 在 32 位和 64 位版本的 .NET Framework 上有所不同。


这个问题比较难,或者说我水平太差。等我有空研究下。或者坐等牛人。

顾请楼主把标题改成未解决。
发表于 2013-9-9 11:15:05 | 显示全部楼层
版主说的不错,不同的字符串可能会产生相同的哈希值,这个要得看需求了,可以改用md5算法。
发表于 2013-9-9 14:39:37 | 显示全部楼层
  1. $AFile = "c:\test\a.txt"
  2. $DFile = "c:\test\add.txt"
  3. $Hash = @{}
  4. Get-Content $AFile | %{
  5.         if(!$Hash.ContainsKey($_)){
  6.                 $_
  7.                  $Hash.Add($_ , 1)
  8.         }
  9. } | Out-File $DFile

  10. $Hash.Keys

  11. CMD /C "PAUSE"
复制代码

评分

参与人数 1技术 +1 收起 理由
PowerShell + 1 赞:看来 汝也掌握了.net 哈希表之妙

查看全部评分

发表于 2013-10-6 17:25:54 | 显示全部楼层
$spath="f:\Code\powershell\重复行.txt"
$dpath="f:\Code\powershell\去重复行.txt"

[System.Collections.Generic.HashSet[string]]$lines=Get-Content $spath -ReadCount 0
Set-Content  -Path $dpath -Value ($lines -join "`r`n")

以前写的,代码很简单,速度也不错,文件大时比较耗内存而已,可能需要3.0以上版本,2.0版的估计要修改下代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:18 , Processed in 0.020494 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表