|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『楼 主』:
关于统计文本文件中字符出现次数的讨论
记得以前无奈何斑竹说过用grep,不过我回去试了那方法,如果同一行出现多个被统计字符的时候就不准确了
我是用sed完成的,不知道不用三方工具可不可以?
test.txt
~@#$%%%!!!&*()123
%!7809
比如说分别统计test.txt文件中 % 和 ! 出现的次数
我是这样弄的,复杂了点,感觉
set "var=%"
set "life=test.txt"
sed "/%var%/!d;s/[^%var%]//g;s/./\n0/g" %life% |sed /^0$/!d |sed -n $=
[ Last edited by vkill on 2006-12-30 at 07:03 AM ]
|
|
2006-12-30 06:19 |
|
|
NaturalJ0
银牌会员
    
积分 1181
发帖 533
注册 2006-8-14
状态 离线
|
『第
2 楼』:
我突然想到以前 est 的看文件大小的方法。
把某文件中所有某字符删去,再看看文件变小多少,可行否?
|
|
2006-12-30 06:26 |
|
|
tao0610
高级用户
    朦胧的世界
积分 579
发帖 218
注册 2006-10-24
状态 离线
|
『第
3 楼』:
点一点
|

认识自己,降伏自己,改变自己,才能改变别人! |
|
2006-12-30 06:32 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
4 楼』:
坛子里下的hitme的cmd全集里也有谈到,不过不知为什么,里面代码好像不是干这个的,谁能说说?
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-12-30 06:41 |
|
|
无奈何
荣誉版主
      
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
5 楼』:
用纯批处理实现的话很难到实用程度,不过应该能够完成。关键词不含空格的话可以这样,先用 findstr 过滤一下,然后整行当作参数提交给处理代码段,用 shift 和 %1 循环计数,不过真的太不实用了。
再者 GREP -c 统计的是匹配行,用管道再过滤一下就可以了。如下:
grep -o "PATTERN" file|grep -c "PATTERN"
|

☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-12-30 06:55 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by 无奈何 at 2006-12-30 06:55:
用纯批处理实现的话很难到实用程度,不过应该能够完成。关键词不含空格的话可以这样,先用 findstr 过滤一下,然后整行当作参数提交给处理代码殠... |
|
grep有它的缺陷的,我以前也想过用grep,比如说我要是找^就不可以了,得写为grep "^^"才可以
[ Last edited by vkill on 2006-12-30 at 07:04 AM ]
|
|
2006-12-30 07:00 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
7 楼』:
哎,试了下,不管用sed还是grep,那些正则总是没有办法," .* / "等等这些特殊
|
|
2006-12-30 07:08 |
|
|
无奈何
荣誉版主
      
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
8 楼』:
试试 grep -F 参数。
|

☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-12-30 07:18 |
|