|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Нахождение совпадения в строке и сохранение строк в разные файлы |
|
|
Любой язык - Нахождение совпадения в строке и сохранение строк в разные файлы
|
Новый участник Сообщения: 3 |
Добрый день!
Помогите хотя бы с направлением, куда копать. Есть огромный (несколько млн строк) текстовый файл с логами. Нужно прочитать строку, найти в ней совпадение имени сервиса и в зависимости от этого сохранить строку в другой файл. 20230810 16:44 service1 online 20230810 16:45 service2 online 20230810 17:48 service1 offline 20230810 17:49 service2 offline Заранее спасибо! |
|
Отправлено: 19:03, 10-08-2023 |
fascinating rhythm Сообщения: 6686
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 22:05, 10-08-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Deadooshka Сообщения: 2562
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось Sham, 10-08-2023 в 23:54. Отправлено: 23:49, 10-08-2023 | #3 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось megaloman, 11-08-2023 в 08:25. Отправлено: 08:11, 11-08-2023 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Большое спасибо!
Все варианты рабочие, но при тестовом прогоне (1,9млн строк, 300mb) выяснилось, что ps работает в разы дольше скрипта на cmd (ps - 690 секунд, cmd - 2) и сохраняет файл по умолчанию в UTF-16. ЗЫ Если не сложно, подскажите как кодировку по дефолту в PS оставлять? |
|
Отправлено: 18:08, 11-08-2023 | #5 |
Deadooshka Сообщения: 2562
|
Профиль | Отправить PM | Цитировать Цитата xam2002:
Цитата xam2002:
|
||
Последний раз редактировалось Sham, 11-08-2023 в 19:59. Отправлено: 19:05, 11-08-2023 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Sham,
Большое спасибо, забыл, что можно использовать глобальные переменные, пытался с параметром в самом out-file играть. Цитата Sham:
|
|
Отправлено: 14:23, 14-08-2023 | #7 |
Старожил Сообщения: 232
|
Профиль | Отправить PM | Цитировать Можно и мой экзотический вариант попробовать:
ForEach ($str in (Get-Content .\service.txt -Encoding utf8)) { ($str | Select-String -Pattern '[\S\s]*service1[\S\s]*').Matches | ForEach {$_.Value | Out-File -Append .\service1.log -Encoding utf8} ($str | Select-String -Pattern '[\S\s]*service2[\S\s]*').Matches | ForEach {$_.Value | Out-File -Append .\service2.log -Encoding utf8} } |
Отправлено: 18:00, 14-08-2023 | #8 |
Ветеран Сообщения: 1758
|
|
Отправлено: 23:13, 14-08-2023 | #9 |
fascinating rhythm Сообщения: 6686
|
Профиль | Отправить PM | Цитировать Так вроде побыстрее должно быть:
function ExtractTo-Chunk ($in,$out,$regex) { [regex]$regex = $regex [System.IO.File]::AppendAllText("$out", ([System.IO.File]::ReadAllLines("$in") -match $regex -join [Environment]::NewLine)) } ExtractTo-Chunk -in "C:\temp\big.log" -out "C:\temp\service1.log" -regex "service1" ExtractTo-Chunk -in "C:\temp\big.log" -out "C:\temp\service2.log" -regex "service2" |
------- Отправлено: 13:17, 15-08-2023 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2010 - [решено] Excel 2010. Суммирование по столбцу: разные суммы, лист на млн. строк и т.д. | flev45 | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 29-05-2019 13:12 | |
VBS/WSH/JS - массив из строк, поиск по строке | matson | Скриптовые языки администрирования Windows | 11 | 09-06-2017 21:35 | |
CMD/BAT - [решено] Нахождение совпадения без учета регистра | Mikle_home88 | Скриптовые языки администрирования Windows | 1 | 04-08-2015 15:20 | |
Расшаренные файлы в лок.сети и разные козлы | SimSaf | Хочу все знать | 8 | 08-02-2013 00:02 | |
Как переписать текстовые файлы в разные папки! | Guest | Программирование и базы данных | 7 | 22-10-2004 02:57 |
|