PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Аватара пользователя
coollogan

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение coollogan »

Цитата coollogan:



Да, задача такая, нужно собрать топ ±3000 повторяющихся строк из списка)
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




т.е. остальные записи не нужны совсем?

Тогда:

1. Установите powershell core, лучше крайнюю версию (7.0). В powershell core командлет group-object был оптимизирован и работает гораздо быстрее, чем в версиях PS 5.1 и ниже. В общем, для получения адекватного времени обработки, необходимо использовать свежую версию powershell.

2. Если откидывать уникальные строки, то можно код оптимизировать (у меня отрабатывает на Вашем файле ps.txt, примерно 50-55 сек.):





Код:

Код: Выделить всё

measure-command{
	$in = 'ps.txt'
	$out = 'ps.csv'
	$arr = gc $in -r 0 -enc utf8|%{$_|sort}
	$arrnum = for ($i=1;$i -lt $arr.count;$i++){
		if($arr[$i] -eq $arr[($i-1)]){$i;$i-1}
	}
	$arrsnum = $arrnum|sort -uni
	$arrresult = for($i=0;$i -lt $arrsnum.count;$i++){
		$arr[($arrsnum[$i])]
	}
	$arrresult|group -noel |select name,count|sort count -d|
	export-csv $out  -notype -enc utf8
}
Аватара пользователя
Iska

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение Iska »

Цитата YuS_2:



В powershell core командлет group-object был оптимизирован и работает гораздо быстрее, чем в версиях PS 5.1 и ниже.
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




Подтверждаю!

Файл обрабатывался минут 15 на моей машине в Powershell 7 RC2. Окончания работы PS 5.1 я ждал почти сутки, но так и не дождался.



В целом, код такой:



Код:

Код: Выделить всё

(gc C:\temp\PS.txt |group -noel |select name,count).where{$_.count -ge 3000} |sort count -desc |Export-Csv C:\temp\PS.txt ';' -NoType
Аватара пользователя
DJ Mogarych

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение DJ Mogarych »

coollogan, попробуйте в Excel. Поменять путь до файла и нажать Ctrl+Alt+F5

У меня выгружало около минуты.

Выгрузит адреса с наибольшими повторениями (3000 адресов)
Аватара пользователя
v79italya

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение v79italya »

Друзья, YuS_2, v79italya, DJ Mogarych, Serguei Kouzmine, Busla, ВСЕМ ВАМ ОГРОМНОЕ СПАСИБО!



Не ожидал такой помощи, сейчас буду пробовать все варианты)




Цитата v79italya:



попробуйте в Excel. Поменять путь до файла и нажать Ctrl+Alt+F5
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




А Ctrl+Alt+F5 какую функцию выполняет? Хочу попробовать на mac, не помогает, а гуглеж такой горячей клавиши не находит.
Аватара пользователя
coollogan

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение coollogan »

Цитата coollogan:



Ctrl+Alt+F5 какую функцию выполняет?
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




Запускает запрос Power Query.

Забыл написать что Power Query встроена в Excel2016 и в Excel 365. Для Excel 2010-2013 надстройку Power Query надо скачивать отдельно. И все это на Windows.

Насчет Excel на Mac мне ничего не известно

здесь внизу есть и про Mac

HTML код:

Код: Выделить всё

https://support.office.com/ru-ru/article/%D0%93%D0%B4%D0%B5-%D0%BD%D0%B0%D0%B9%D1%82%D0%B8-%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-power-query-e9332067-8e49-46fc-97ff-f2e1bfa0cb16
Аватара пользователя
v79italya

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение v79italya »

v79italya, получилось сделать на удаленном рабочем столе! Реально за пару секунд все сделалось, шок! Спасибо!
Аватара пользователя
coollogan

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение coollogan »

Цитата coollogan:



за пару секунд все сделалось
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




Пожалуйста. Только, откровенно говоря, с трудом верится в эту скорость. У меня текстовый файл только читает секунд пятнадцать.

Попробуйте на другом текстовом файле, о котором вы говорили(147мб).
Аватара пользователя
coollogan

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение coollogan »

v79italya, может, у него там SSD в чередовании?!
Аватара пользователя
Iska

Re: PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell

Сообщение Iska »

Цитата v79italya:



Только, откровенно говоря, с трудом верится в эту скорость
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




Перепроверил, файл 7мб сортирует за +- 3 секунды

На файл 148 мегабайт ушло секунд 15 Изображение



v79italya, а если возникнет необходимость получить больше 3 000 строк, я могу внести какие-то корректировки?




Цитата Iska:



может, у него там SSD в чередовании?!
PowerShell - [решено] [Вопрос новичка] Ошибка в скрипте PowerShell




не знаю SSD или HDD, но оперативки 32 ГБ ��

Дали попользоваться
Ответить

Вернуться в «Скриптовые языки администрирования Windows»