Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помощь с sort (http://forum.oszone.net/showthread.php?t=266543)

sov44 20-08-2013 14:35 2204569

Помощь с sort
 
Имеется текстовый файл со строками типа
Цитата:

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 2204639

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 2204671

Iska, здорово, как я сразу не догадался (рыл в сторону sort /+3)

Iska 20-08-2013 17:16 2204684

sov44, ну, gora же делал что-то подобное с месяц-два назад — по-моему, для Вас же.


Время: 14:46.

Время: 14:46.
© OSzone.net 2001-