Board logo

标题: [文件操作] 批处理如何把前面相同的数字排在一起? [打印本页]

作者: 娜美    时间: 2021-11-28 11:40     标题: 批处理如何把前面相同的数字排在一起?

a.txt

101*7*8**8*7*
366*7**6***7
245**45*4**4*
358*1**622***
115**786***54*
144***532*4**
001*4*4*8*5*6*

101*8**5*7*5*0
358**3*4**2*6*
366**4*7*0**0*
115*4*4*1**46*



应输出
b.txt

101*7*8**8*7*
101*8**5*7*5*0
366*7**6***7
366**4*7*0**0*
245**45*4**4*
358*1**622***
358**3*4**2*6*
115**786***54*
115*4*4*1**46*
144***532*4**
001*4*4*8*5*6*


想把前面3个相同的数字排在一起, 然后做按原先后排列去重复行,  
文本大概有20mb左右 ,所以想用Powershell放在bat脚本执行
Thanks

作者: idwma    时间: 2021-11-28 19:14

  1. powershell "$a=type a.txt;foreach($b in $a){$c=$b[0..2] -join '';$d+=@($a -match "^$c")};$d[0..($a.count-1)]" >b.txt
复制代码

作者: 娜美    时间: 2021-11-28 20:30

回复 2# idwma


   很好Thanks,  但是如果a.txt有空行情况会不准确   另外还需去重复行  idwma哥哥
作者: 娜美    时间: 2021-11-28 20:43

回复 2# idwma


  
  1. powershell Get-Content -Path a.txt | select-object -unique | Out-File -FilePath b.txt
复制代码

idwma哥哥  为什么我这个去重复行 放在bat里没有任何反应呢
作者: for_flr    时间: 2021-11-29 09:25

回复 2# idwma

    如果前三位相同的在很前面,会重复哒。
101*7*8**8*7*
101*8**5*7*5*0
366*7**6***7
作者: flashercs    时间: 2021-11-29 10:03

  1. powershell -c "Get-Content -Path a.txt | Sort-Object -Property @{Expression = { $_.SubString(0, [Math]::Min(3, $_.Length)) } ; Ascending = $true; } -Unique"
复制代码

作者: 娜美    时间: 2021-11-29 10:32

回复  idwma

    如果前三位相同的在很前面,会重复哒。
101*7*8**8*7*
101*8**5*7*5*0
366*7**6*** ...
for_flr 发表于 2021-11-29 09:25



   不会重复哒     重复数据是看整行
作者: 娜美    时间: 2021-11-29 10:42

回复 6# flashercs


   嗯嗯Thanks    按长度做去重复




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2