![]() |
中国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: 请问 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 |