中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-02 23:45
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于统计文本文件中字符出现次数的讨论 查看 1,089 回复 7
楼 主 关于统计文本文件中字符出现次数的讨论 发表于 2006-12-30 06:19 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
记得以前无奈何斑竹说过用grep,不过我回去试了那方法,如果同一行出现多个被统计字符的时候就不准确了

我是用sed完成的,不知道不用三方工具可不可以?

test.txt

~@#$%%%!!!&*()123
%!7809

比如说分别统计test.txt文件中 % 和 ! 出现的次数


我是这样弄的,复杂了点,感觉



    set "var=%"
    set "life=test.txt"
    sed "/%var%/!d;s///g;s/./\n0/g" %life% |sed /^0$/!d |sed -n $=



[ Last edited by vkill on 2006-12-30 at 07:03 AM ]
2 发表于 2006-12-30 06:26 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
我突然想到以前 est 的看文件大小的方法。
把某文件中所有某字符删去,再看看文件变小多少,可行否?
3 发表于 2006-12-30 06:32 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线

认识自己,降伏自己,改变自己
,才能改变别人!
4 发表于 2006-12-30 06:41 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
坛子里下的hitme的cmd全集里也有谈到,不过不知为什么,里面代码好像不是干这个的,谁能说说?
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
5 发表于 2006-12-30 06:55 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
21年会员
UID 40733
性别 男
状态 离线
用纯批处理实现的话很难到实用程度,不过应该能够完成。关键词不含空格的话可以这样,先用 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

6 发表于 2006-12-30 07:00 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
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 ]
7 发表于 2006-12-30 07:08 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
哎,试了下,不管用sed还是grep,那些正则总是没有办法," .* / "等等这些特殊
8 发表于 2006-12-30 07:18 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
21年会员
UID 40733
性别 男
状态 离线
试试 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

论坛跳转: