中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 03:28
48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何用批處理計算在文本檔案中重複出現的字的次數?
可打印版本  765 / 6
第1楼 ago2000 发表于 2008-01-01 01:24
新手上路 发帖 2 积分 6
如何用批處理計算在文本檔案中重複出現的字的次數?
请教各位高手们,如何用批处理计算在文本档案中重复出现的字的次数?
比如 list.txt 内文是

要如何用批处理得到 ab bb ca ac 出现的次数?
第2楼 junchen2 发表于 2008-01-01 02:47
高级用户 发帖 219 积分 537 来自 杭州--半山
echo off
for /f "delims=" %%a in (1.txt) do set /a ago2000%%a+=1
setlocal enabledelayedexpansion
for /f "delims=" %%b in ('set^|findstr "^ago2000.*=[1-9][0-9]*$"') do (set c=%%b &set c=!c:ago2000=! & echo !c!
)
pause
第3楼 ago2000 发表于 2008-01-01 10:58
新手上路 发帖 2 积分 6
YA! 非常感激 junchen2 兄,三两下解决了小弟的问题
修改输出到档案试行后才发现,每运行一次得出的结果就加倍,
不晓得是哪里的关系呢?
另外又该如何该结果做个由多至少的排序呢?
第4楼 HAT 发表于 2008-01-01 12:00
版主 发帖 5,017 积分 9,023
加个变量初始化,就不会累加了。

@echo off
for /f "delims=" %%a in (1.txt) do set /a ago2000%%a=0
for /f "delims=" %%a in (1.txt) do set /a ago2000%%a+=1
setlocal enabledelayedexpansion
for /f "delims=" %%b in ('set^|findstr "^ago2000.*=*$"') do (set c=%%b &set c=!c:ago2000=! & echo !c!
)
第5楼 huzixuan 发表于 2008-01-01 20:11
高级用户 发帖 219 积分 537 来自 芜湖
Originally posted by junchen2 at 2008-1-1 02:47:
for /f "delims=" %%b in ('set^|findstr "^ago2000.*=*$"') ...

请问 junchen2 兄,findstr 为什么要搜索两个不同的数字集呢?
?????????
第6楼 junchen2 发表于 2008-01-01 23:18
高级用户 发帖 219 积分 537 来自 杭州--半山
to huzixuan兄,小弟认为更好一点,[1-9][0-9]*可以至少匹配一个数字。

to ago2000兄,要排序我有一个苯方法,
echo off
for /f "delims=" %%a in (1.txt) do set /a ago2000%%a+=1
setlocal enabledelayedexpansion
for /l %%b in (20 -1 1) do (
for /f "delims=" %%b in ('set^|findstr "^ago2000.*=%%b$"') do (
set c=%%b &set c=!c:ago2000=! & echo !c!
)
)
pause

效率太低,我今天用awk写了一个,是调用了SORT进行排序,效率也不高,,所以我就没有贴上来了。
第7楼 zh159 发表于 2008-01-02 20:50
金牌会员 发帖 1,467 积分 3,687
这个效率要高些,不过sort对于10以上排序是按头位数字大小排列的
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023