标题: 如何用批處理計算在文本檔案中重複出現的字的次數?
[打印本页]
作者: ago2000
时间: 2008-1-1 01:24
标题: 如何用批處理計算在文本檔案中重複出現的字的次數?
请教各位高手们,如何用批处理计算在文本档案中重复出现的字的次数?
比如 list.txt 内文是
ab
bb
bb
ca
ab
ac
ca
要如何用批处理得到 ab bb ca ac 出现的次数?
作者: junchen2
时间: 2008-1-1 02:47
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
作者: ago2000
时间: 2008-1-1 10:58
YA! 非常感激 junchen2 兄,三两下解决了小弟的问题
修改输出到档案试行后才发现,每运行一次得出的结果就加倍,
不晓得是哪里的关系呢?
另外又该如何该结果做个由多至少的排序呢?
作者: HAT
时间: 2008-1-1 12:00
加个变量初始化,就不会累加了。
@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.*=[1-9][0-9]*$"') do (set c=%%b &set c=!c:ago2000=! & echo !c!
)
作者: huzixuan
时间: 2008-1-1 20:11
Quote: |
Originally posted by junchen2 at 2008-1-1 02:47:
for /f "delims=" %%b in ('set^|findstr "^ago2000.*=[1-9][0-9]*$"') ... |
|
请问
junchen2 兄,findstr 为什么要搜索两个不同的数字集呢?
[1-9][0-9] ?????????
作者: junchen2
时间: 2008-1-1 23:18
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进行排序,效率也不高,,所以我就没有贴上来了。
作者: zh159
时间: 2008-1-2 20:50
这个效率要高些,不过sort对于10以上排序是按头位数字大小排列的
@echo off
for /f "delims=" %%i in (Test.txt) do set /a .%%i+=1
for /f "tokens=1,2 delims=.=" %%i in ('set .') do set ..%%j.%%i=.
for /f "tokens=1,2 delims=.=" %%i in ('set ..^|sort/r') do echo %%j=%%i
pause
exit