标题: [文本处理] 批处理怎样把文本中整数做统计并按频率排序 [打印本页]
作者: hkldd 时间: 2020-7-20 15:37 标题: 批处理怎样把文本中整数做统计并按频率排序
文本中全是数字,毎行就是:01 02 03 04 05 06这样的格式,有很多行,人工统计慢易出错,哪位大大写个脚本,谢谢!- 01 02 03 05 06 23
- 01 02 03 05 06 28
- 01 02 03 05 06 30
- 01 02 03 05 07 08
- 01 02 03 05 07 09
- 01 02 03 05 07 10
- 01 02 03 05 07 11
- 01 02 03 05 07 12
- 01 02 03 05 07 13
- 01 02 03 05 07 14
- 01 02 03 05 07 15
- 01 02 03 05 07 16
- 01 02 03 05 07 17
- 01 02 03 05 07 18
- 01 02 03 05 07 19
- 01 02 03 05 07 20
- 01 02 03 05 07 21
- 01 02 03 05 07 22
- 01 02 03 05 07 24
- 01 02 03 05 07 25
复制代码
上面的数以整数50以下的话想得到这样的样式- 共00次:04,26,27,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
- 共01次:08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,30,
- 共03次:06,
- 共17次:07,
- 共20次:01,02,03,05,
复制代码
作者: Batcher 时间: 2020-7-20 16:01
回复 1# hkldd
请给出10行左右的原始数据作为测试样例,并给出对于这份测试样例希望得到的完整结果。
作者: went 时间: 2020-7-20 21:53
数字统计?- @echo off
- set "txt=0.txt"
- powershell -c "(Get-Content '%txt%' | Out-String ) -split '\s+' | Group-Object {$_} | Sort-Object Count | Group-Object {$_.Count} | foreach { Write-Host ('共{0:d2}次: {1}' -f [int]$_.Name,(($_.Group.Name | Sort-Object | Out-String) -replace '\s+',','))}"
- pause&exit
复制代码
作者: hkldd 时间: 2020-7-22 11:15
你好大侠!运行后截图如下:
只有次数,没有对应的数字,麻烦你得闲看一下,谢谢!
作者: smss 时间: 2020-7-22 11:24
回复 4# hkldd win10测试正常 更新下powershell
作者: went 时间: 2020-7-22 13:24
回复 4# hkldd
兼容win7- @echo off
- set "txt=0.txt"
- powershell -version 2.0 -c "$txt='%txt%';Get-Content '%~0' | Select-Object -Skip 4 | Out-String | Invoke-Expression"
- pause&exit
- $datas=(Get-Content '0.txt' | Out-String ) -split '\s+';
- $s1=(1..50 | Where-Object {$datas -notcontains ('{0:d2}' -f $_)} | foreach {'{0:d2}' -f $_} | Out-String)
- $s1=$s1 -replace '\s+',','
- Write-Host ('共{0:d2}次: {1}' -f [int]0,$s1)
- $datas | Group-Object {$_} |
- Sort-Object Count | Group-Object Count |
- foreach {
- $str=($_.Group | Sort-Object {$_.Name} | Select-Object Name | Out-String ) -replace 'Name|-+|\s+',',' -replace ',{2,}',''
- Write-Host ('共{0:d2}次: {1}' -f [int]$_.Name,$str)
- }
复制代码
作者: hkldd 时间: 2020-7-22 15:14
完美解决!谢谢大侠
作者: asnahu 时间: 2020-7-30 10:46
- gawk '{for(i=1;i<=NF;i++){a[$i] = ($i in a) ? a[$i]+=1 : a[$i]=1}}END{for(i in a)print i,a[i]}' txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |