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

[问题求助] 删除重复行的poweshell改为区分大小写

  1. a.txt
  2. aA
  3. Aa
  4. AA
  5. aa
  6. aA
  7. Aa
  8. a a
  9. #@&cls&powershell "type %~s0|out-string|iex"&PAUSE&exit
  10. $AFile = "a.txt"
  11. $DFile = "b.tmp"
  12. $Hash = @{}
  13. Get-Content $AFile | %{
  14. if(!$Hash.ContainsKey($_)){
  15. $_
  16. $Hash.Add($_ , 1)
  17. }
  18. } | Out-File $DFile
  19. $Hash.Keys
  20. CMD /C "PAUSE"
复制代码
最近有poweshell大哥哥在吗
这是用来删除重复行的,但它不会区分字母大小写
请问如何在这上面一句话中添加上区分字母大小写 ?

1楼代码第13行改成
$Hash =[hashtable]::new()

TOP

本帖最后由 娜美 于 2024-5-5 19:47 编辑

回复 2# Five66


   发现,哈希表如果放内存,随着不同大小文件,内存会被慢慢占全,当所有内存被占用完,不知道它还能不能继续工作,在试。。
大哥哥,如果将哈希表存放在当前路径硬盘上,是不是就可以解决这种问题呢?

TOP

如果不是对比所有文件之间的重复项 , 不同文件之间清空下哈希或者重新new一个哈希

TOP

本帖最后由 aloha20200628 于 2024-5-6 21:16 编辑


分享两个可以区分英文大小写的powershell去重代码,第一个据称是 ‘最慢’ 的句式,第二个据称是 ‘最快’ 的句式...
一。以下代码中 gc/sc默认读写文件编码是default(即简中编码)
  1. gc $inFile | select-object -unique | sc $outFile
复制代码
二。以下代码中 [io.file] 默认读写文件编码是utf-8编码
  1. [io.file]::writealllines($outFile, [linq.enumerable]::distinct([io.file]::readlines($inFile)))
复制代码

TOP

本帖最后由 娜美 于 2024-5-7 15:30 编辑

回复 5# aloha20200628


   嗯嗯,大哥哥的第二种确实快多了,相对于windows自带sort或者批处理算法要好很多,windows自带sort就一直没添加什么新的功能,就连区分大小写都没,一直停留在可有可没态度,无论是使用poweshell方式或者windows自带sort,性能功能始终无法与开源linux sort与之争辉。是不是微软不想改进还是些什么原因呢

TOP

返回列表