中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-02 22:48
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 关于统计文本文件中字符出现次数的讨论
可打印版本  1,086 / 7
第1楼 vkill 发表于 2006-12-30 06:19
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
关于统计文本文件中字符出现次数的讨论
记得以前无奈何斑竹说过用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楼 NaturalJ0 发表于 2006-12-30 06:26
银牌会员 发帖 533 积分 1,181
我突然想到以前 est 的看文件大小的方法。
把某文件中所有某字符删去,再看看文件变小多少,可行否?
第3楼 tao0610 发表于 2006-12-30 06:32
高级用户 发帖 218 积分 579
第4楼 ccwan 发表于 2006-12-30 06:41
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
坛子里下的hitme的cmd全集里也有谈到,不过不知为什么,里面代码好像不是干这个的,谁能说说?
第5楼 无奈何 发表于 2006-12-30 06:55
荣誉版主 发帖 356 积分 1,338
用纯批处理实现的话很难到实用程度,不过应该能够完成。关键词不含空格的话可以这样,先用 findstr 过滤一下,然后整行当作参数提交给处理代码段,用 shift 和 %1 循环计数,不过真的太不实用了。

再者 GREP -c 统计的是匹配行,用管道再过滤一下就可以了。如下:

grep -o "PATTERN" file|grep -c "PATTERN"
第6楼 vkill 发表于 2006-12-30 07:00
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
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楼 vkill 发表于 2006-12-30 07:08
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
哎,试了下,不管用sed还是grep,那些正则总是没有办法," .* / "等等这些特殊
第8楼 无奈何 发表于 2006-12-30 07:18
荣誉版主 发帖 356 积分 1,338
试试 grep -F 参数。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023