PowerShell文本文件去除重复行


有的时候,你可能需要对文本文件去除重复行,比如分析log时,不想被重复的行干扰,这里提供个ps方法,主要用到.net中的泛型类HashSet

以下介绍来自网上:

HashSet<T>类
HashSet<T>类主要是设计用来做高性能集运算的,例如对两个集合求交集、并集、差集等。集合中包含一组不重复出现且无特性顺序的元素。

HashSet<T>的一些特性如下:

1、HashSet<T>中的值不能重复且没有顺序。

2、HashSet<T>的容量会按需自动添加。

 

$spath="c:\Users\softy\Desktop\EAO.TXT"
$dpath="c:\Users\softy\Desktop\EAO_NEW.TXT"

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

对一个270M的文本文件进行了测试,我的电脑上耗时约17秒,但内存消耗比较大,近800M,代码还是比较简短的

$ls=Get-Content -Path $spath -ReadCount 0|Select-Object -Unique
Set-Content -Path $dpath -Value ($lines -join "`r`n")

你也可以这样来比比看效果

本文链接: https://www.pstips.net/remove-duplicates-lines.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注