中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于统计文本文件中字符出现次数的讨论
作者:
标题: 关于统计文本文件中字符出现次数的讨论 上一主题 | 下一主题
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
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: