PDA

Показать полную графическую версию : [решено] Поиск уникальных значений по файлу


Sat_Kelman
22-11-2011, 10:56
Добрый день!

Есть текстовый файл List.txt примерно на 100 000 строк, примерно следующего содержания
XR001.sdf
XR001.fgft
XR001.sdfsdf
DR01.sdf
DR01.fgtr
C0R1.fgtr
......
Шаблон такой что идет идентификатор, например XR001 потом точка и потом сможет быть что угодно, но важен только идентификатор
Нужно посчитать количество уникальных значений перед точкой.
Понимаю что нужно смотреть с сторону for /f "tokens=1* delims=." %%i in (List.txt) do, но что-то не могу понять как дальше выцепить и посчитать.
Нужно только количество, подскажите пожалуйста!

gora
22-11-2011, 11:48
посчитать количество уникальных значений »
@Echo Off
For /f "tokens=1* delims=." %%i In (List.txt) Do Set zzzzzzzz%%i=%%i
For /f %%i In ('Set zzzzzzzz') Do Set /A cnt += 1
Echo %cnt%
Pause>Nul

Iska
22-11-2011, 12:12
Sat_Kelman, наиболее просто задача решается при помощи Log Parser (http://technet.microsoft.com/ru-ru/scriptcenter/dd919274) (Download: Log Parser 2.2 - Microsoft Download Center - Download Details (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24659)):
"C:\Program Files\Log Parser 2.2\LogParser.exe" "SELECT EXTRACT_TOKEN(Text, 0, '.') AS Name, COUNT(Name) FROM 'E:\Песочница\0092\List.txt' GROUP BY Name ORDER BY Name Desc" -i:TEXTLINE
На предложенном Вами образце файла List.txt :
XR001.sdf
XR001.fgft
XR001.sdfsdf
DR01.sdf
DR01.fgtr
C0R1.fgtr
получаем следующие результаты:
Name COUNT(ALL Name)
----- ---------------
XR001 3
DR01 2
C0R1 1

Statistics:
-----------
Elements processed: 6
Elements output: 3
Execution time: 0.02 seconds




© OSzone.net 2001-2012