标题: [问题求助] 删除重复行的poweshell改为区分大小写 [打印本页]
作者: 娜美 时间: 2024-5-5 13:56 标题: 删除重复行的poweshell改为区分大小写
- a.txt
- aA
- Aa
- AA
- aa
- aA
- Aa
- a a
-
- #@&cls&powershell "type %~s0|out-string|iex"&PAUSE&exit
- $AFile = "a.txt"
- $DFile = "b.tmp"
- $Hash = @{}
- Get-Content $AFile | %{
- if(!$Hash.ContainsKey($_)){
- $_
- $Hash.Add($_ , 1)
- }
- } | Out-File $DFile
- $Hash.Keys
- CMD /C "PAUSE"
复制代码
最近有poweshell大哥哥在吗
这是用来删除重复行的,但它不会区分字母大小写
请问如何在这上面一句话中添加上区分字母大小写 ?
作者: Five66 时间: 2024-5-5 17:19
1楼代码第13行改成
$Hash =[hashtable]::new()
作者: 娜美 时间: 2024-5-5 19:45
本帖最后由 娜美 于 2024-5-5 19:47 编辑
回复 2# Five66
发现,哈希表如果放内存,随着不同大小文件,内存会被慢慢占全,当所有内存被占用完,不知道它还能不能继续工作,在试。。
大哥哥,如果将哈希表存放在当前路径硬盘上,是不是就可以解决这种问题呢?
作者: Five66 时间: 2024-5-5 22:58
如果不是对比所有文件之间的重复项 , 不同文件之间清空下哈希或者重新new一个哈希
作者: aloha20200628 时间: 2024-5-6 21:14
本帖最后由 aloha20200628 于 2024-5-6 21:16 编辑
分享两个可以区分英文大小写的powershell去重代码,第一个据称是 ‘最慢’ 的句式,第二个据称是 ‘最快’ 的句式...
一。以下代码中 gc/sc默认读写文件编码是default(即简中编码)- gc $inFile | select-object -unique | sc $outFile
复制代码
二。以下代码中 [io.file] 默认读写文件编码是utf-8编码- [io.file]::writealllines($outFile, [linq.enumerable]::distinct([io.file]::readlines($inFile)))
复制代码
作者: 娜美 时间: 2024-5-7 09:06
本帖最后由 娜美 于 2024-5-7 15:30 编辑
回复 5# aloha20200628
嗯嗯,大哥哥的第二种确实快多了,相对于windows自带sort或者批处理算法要好很多,windows自带sort就一直没添加什么新的功能,就连区分大小写都没,一直停留在可有可没态度,无论是使用poweshell方式或者windows自带sort,性能功能始终无法与开源linux sort与之争辉。是不是微软不想改进还是些什么原因呢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |