coollogan, можете попробовать на WSH (используем OLE DB):
Скрытый текст
Код:

Option Explicit
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = 1
Dim strSourceFile
Dim strDestFile
Dim strPath2Schema
Dim objRecordset
Dim dtStartDateTime
strSourceFile = "PS.txt"
strDestFile = "ResultFile.csv"
With WScript.CreateObject("Scripting.FileSystemObject")
strPath2Schema = .GetParentFolderName(WScript.ScriptFullName)
dtStartDateTime = Now()
WScript.Echo "Start at: " & CStr(dtStartDateTime)
If Not .FileExists(.BuildPath(strPath2Schema, "Schema.ini")) Then
With .CreateTextFile(.BuildPath(strPath2Schema, "Schema.ini"), True)
.Write _
"[" & strSourceFile & "]" & vbCrLf & _
"ColNameHeader=False" & vbCrLf & _
"CharacterSet=1251" & vbCrLf & _
"Format=Delimited(;)" & vbCrLf & _
"TextDelimiter=none" & vbCrLf & _
"Col1=Url Text" & vbCrLf & _
"" & vbCrLf & _
"[" & strDestFile & "]" & vbCrLf & _
"ColNameHeader=True" & vbCrLf & _
"CharacterSet=1251" & vbCrLf & _
"Format=CSVDelimited" & vbCrLf & _
"TextDelimiter=none" & vbCrLf & _
"Col1=Url Char Width 255" & vbCrLf & _
"Col2=Count Integer" & vbCrLf
.Close
End With
End If
If .FileExists(.BuildPath(strPath2Schema, strDestFile)) Then
.DeleteFile .BuildPath(strPath2Schema, strDestFile), True
End If
WScript.CreateObject("ADODB.Recordset").Open _
"SELECT S.[url], COUNT(S.[url]) AS [Count] INTO [" & strDestFile & "] " & _
"FROM [" & strSourceFile & "] AS S " & _
"GROUP BY S.[url] " & _
"ORDER BY COUNT(S.[url]) DESC", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath2Schema & ";Extended Properties=""text;""", _
adOpenStatic, adLockOptimistic, adCmdText
WScript.Echo "Finish at: " & CStr(Now())
WScript.Echo "Total: " & CStr(DateDiff("s", dtStartDateTime, Now())) & " second(s)."
End With
WScript.Quit 0
Поместите скрипт рядом с Вашим файлом PS.txt.
У меня получается на Вашем выложенном файле PS.txt так:
с сортировкой — чуть больше двадцати секунд (без сортировки — чуть больше пятнадцати секунд).
NB! Важное замечание: на x64 ОС нужно использовать x86-версии cscript.exe/wscript.exe, т.е., прямо указывать путь к ним из каталога C:\Windows\
SysWOW64 (см. скриншот под спойлером выше).