标题: [文件操作] 批处理如何把前面相同的数字排在一起? [打印本页]
作者: 娜美 时间: 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
- 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
- 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
- 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 |