PDA

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


sov44
20-08-2013, 14:35
Имеется текстовый файл со строками типа
KB2687324--20121020--C:\WINDOWS\Installer\2295d.msp
KB2687626--20120712--C:\WINDOWS\Installer\2292a.msp
KB2584052--20110917--C:\WINDOWS\Installer\228b8.msp
KB953432--20110917--C:\WINDOWS\Installer\228b8.msp
KB2687483--20121020--C:\WINDOWS\Installer\22989.msp
KB2289163--20110123--C:\WINDOWS\Installer\227e5.msp
KB975051--20110123--C:\WINDOWS\Installer\2275a.msp
KB2284695--20110123--C:\WINDOWS\Installer\2275a.msp
Необходимо создать другой текстовый файл, в котором строки будут отсортированы по нарастающей по значению первого токена, сначала шестизначные КВ (KB953432), затем семизначные КВ (KB2284695)

Iska
20-08-2013, 16:04
sov44, общий принцип тот же (тупо, без оптимизаций):
@echo off
setlocal enableextensions enabledelayedexpansion

>nul copy nul "0002.txt"

for /f "usebackq tokens=1* delims=-" %%i in (`type "0001.txt" ^| findstr.exe /r /c:"KB......--" ^| sort.exe`) do (
>>"0002.txt" echo %%i--%%j
)

for /f "usebackq tokens=1* delims=-" %%i in (`type "0001.txt" ^| findstr.exe /r /c:"KB.......--" ^| sort.exe`) do (
>>"0002.txt" echo %%i--%%j
)

endlocal
exit /b 0


Update: действительно, тупо.
@echo off
setlocal enableextensions enabledelayedexpansion

>"0002.txt" (
type "0001.txt" | findstr.exe /r /c:"KB......--" | sort.exe
type "0001.txt" | findstr.exe /r /c:"KB.......--" | sort.exe
)

endlocal
exit /b 0

sov44
20-08-2013, 16:58
Iska, здорово, как я сразу не догадался (рыл в сторону sort /+3)

Iska
20-08-2013, 17:16
sov44, ну, gora же делал что-то подобное с месяц-два назад — по-моему, для Вас же.




© OSzone.net 2001-2012