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

[文本处理] 批处理如何统计txt文本每行字符串出现的次数?

  1. @echo off&setlocal enabledelayedexpansion
  2. sort a.txt | findstr . >temp.tx
  3. set /pstr=<temp.tx
  4. set num=1000000001
  5. (for /f "skip=1 delims=" %%i in (temp.tx) do (     
  6.     if "!str!" neq "%%i" (
  7.        echo;!num:~1!  !str!
  8.        set num=1000000001
  9.     ) else set /a num+=1
  10.       set str=%%i
  11. )
  12.        echo;!num:~1!  !str!
  13. )>sort.txt
  14. sort /r sort.txt >temp.tx
  15. (for /f "tokens=* delims=0" %%i in (temp.tx) do echo;%%i)>sort.txt
  16. del temp.tx
  17. pause
复制代码
求解用这个代码统计数字可以,英文就不行




解压后然后用这个BAT进行统计,就出问题


统计后,很多重复出现的

统计后的:

513340  a
125258  q        <<<<-----------------------------------------------------------------------------
76660  w
71654  z
39801  s
37051  x
29514  l
21589  c
21297  y
19345  z
16611  m
14866  f
14802  h
14050  d
12060  g
11941  b
11021  k
10528  t
10507  j
9588  p
9406  w
6718  q       <<<<----------------------------------------------------------------------------------------
6495  A
4691  l
4258  r
3918  e
3402  h
3195  n
3155  v
2813  o
2559  o
2471  E
1763  i
1654  Q
1111  Z
1017  W
933  L
920  u
857  X
777  b
645  H
505  F
491  S
426  G
404  B
393  C
388  Y
384  D
383  O
366  M
307  T
292  K
272  J
235  n
230  P
168  R
114  N
79  I
46  V
21  U
1  y
1  W
1  v
1  u
1  t
1  R
1  O
1  k
1  j
1  I
1  g
1  f




大神过帮帮我,纠结了差不多半个月了,我需要统计一个70MB左右的TXT文本文档。。。。

原地址6楼

http://www.bathome.net/redirect. ... 2881&ptid=24860

在线等。。。。。。。。。。。。。。。。。。。。。。。。

TOP

本帖最后由 PowerShell 于 2014-5-14 18:00 编辑

用powershell玩简单统计是可靠地,比如你的压缩,代码如下:
  1. Get-Content a:\pscode\a.txt | Group-Object | Format-List
复制代码
返回:
Name   : A
Count  : 519835
Group  : {A, A, A, A...}
Values : {A}

Name   : B
Count  : 13122
Group  : {B, B, B, B...}
Values : {B}

Name   : C
Count  : 21982
Group  : {C, C, C, C...}
Values : {C}

Name   : D
Count  : 14434
Group  : {D, D, D, D...}
Values : {D}

Name   : E
Count  : 6389
Group  : {E, E, E, E...}
Values : {E}

Name   : F
Count  : 15372
Group  : {F, F, F, F...}
Values : {F}

Name   : G
Count  : 12487
Group  : {G, G, G, G...}
Values : {G}

Name   : H
Count  : 18849
Group  : {H, H, H, H...}
Values : {H}

Name   : I
Count  : 1843
Group  : {I, I, I, I...}
Values : {I}

Name   : J
Count  : 10780
Group  : {J, J, J, J...}
Values : {J}

Name   : K
Count  : 11314
Group  : {K, K, K, K...}
Values : {K}

Name   : L
Count  : 35138
Group  : {L, L, L, L...}
Values : {L}

Name   : M
Count  : 16977
Group  : {M, M, M, M...}
Values : {M}

Name   : N
Count  : 3544
Group  : {N, N, N, N...}
Values : {N}

Name   : O
Count  : 5756
Group  : {O, O, O, O...}
Values : {O}

Name   : P
Count  : 9818
Group  : {P, P, P, P...}
Values : {P}

Name   : Q
Count  : 133630
Group  : {Q, Q, Q, Q...}
Values : {Q}

Name   : R
Count  : 4427
Group  : {R, R, R, R...}
Values : {R}

Name   : S
Count  : 40292
Group  : {S, S, S, S...}
Values : {S}

Name   : T
Count  : 10836
Group  : {T, T, T, T...}
Values : {T}

Name   : U
Count  : 942
Group  : {U, U, U, U...}
Values : {U}

Name   : V
Count  : 3202
Group  : {V, V, V, V...}
Values : {V}

Name   : W
Count  : 87084
Group  : {W, W, W, W...}
Values : {W}

Name   : X
Count  : 37908
Group  : {X, X, X, X...}
Values : {X}

Name   : Y
Count  : 21686
Group  : {Y, Y, Y, Y...}
Values : {Y}

Name   : Z
Count  : 92110
Group  : {Z, Z, Z, Z...}
Values : {Z}
----------------------------
如果区别大小写的话,用
  1. Get-Content a:\pscode\a.txt | Group-Object  -CaseSensitive  | Format-List
复制代码
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

本帖最后由 CrLf 于 2014-5-14 18:09 编辑

统计错个毛,他没区分大小写罢了,if "!str!" neq "%%i" 改 if /i "!str!" neq "%%i" 就是正确结果
到底谁坑爹,文本解析不用 shell 用 powershell ?得了吧
  1. sort a.txt | uniq -c | sort -o b.txt
复制代码
不区分大小写:
  1. sort a.txt | uniq -i -c | sort -o b.txt
复制代码

TOP

你发帖1分钟前,我正好更正了,
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 7# PowerShell


    我是WIN7 系统 网上下载这个东西好像无法安装

TOP

本帖最后由 nono84223860 于 2014-5-14 18:44 编辑

回复 7# PowerShell

我会用了,但是,我想按多到少排序最好就是有个文本文档这样子,

我发的那个RAR只是其中一部分数据 ,我的数据达到50MB的,

能改进一下人家的脚本吗

TOP

回复 11# nono84223860


    50M 略大,个人建议太大的文件用 gnu 的那一堆文本流处理工具搞定,不然无论是内存还是效率都堪忧,这里没有针对 powershell,因为用 js 也是这样,把文本转成对象占用的内存翻了好几倍,面对对象的脚本应该在更合适的地方发挥长处,术业有专攻么

TOP

回复 12# CrLf



我是小白,完全不懂,你教教我吗,

TOP

回复 12# CrLf


如果能改进一下,我发的那个脚本就好了,大神能做到吗

TOP

回复 14# nono84223860


    8 楼是不是白发了

TOP

回复 12# CrLf


PS F:\1234> sort a.txt | uniq -c | sort -o b.txt
无法将“uniq”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后重
试。
所在位置 行:1 字符: 18
+ sort a.txt | uniq <<<<  -c | sort -o b.txt
    + CategoryInfo          : ObjectNotFound: (uniq:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException


这是什么意思

TOP

回复 15# CrLf


    我不太会用你的脚本。我是不是指定的路径错了

TOP

回复 15# CrLf


楼顶我发的脚本处理速度很快。

TOP

回复 15# CrLf


你发的脚本,我还是不会用

TOP

返回列表