У меня есть несколько файлов журнала сервера.Всего они содержат около 500 000 строк текста журнала.Я только хочу сохранить строки, которые содержат «Загруженные» и «Журнал».Строки, которые я хочу исключить, фокусируются на журналах ошибок и основных системных операциях, таких как «запуск клиента», «перезапуск клиента» и т. Д.
Вот пример строк, которые мы ищем:
[22:29:05]: Downloaded 39 /SYSTEM/SAP logs from System-4, customer (000;838) from 21:28:51,705 to 21:29:04,671
Строки, которые должны быть сохранены, должны быть дополнены строкой даты, которая является частью имени файла журнала.($ date)
Далее, поскольку полученные журналы довольно неструктурированы, отфильтрованные файлы должны быть преобразованы в один csv-файл (столбцы: отметка времени, загрузка журналов, системный каталог, тип системы, клиент, время запуска,время окончания, дата [будет добавлено к каждой строке из имени файла]. Операция замены, превращающая интервалы в запятую, является лишь первой попыткой внести некоторую структуру в данные. Этот файл должен быть загружен в программу панели инструментов python.
В настоящий момент предварительная обработка 3 Txt-файлов занимает 2,5 минуты, а цель - максимум 5-10 секунд, если это возможно.
Большое спасибо за вашу поддержку, поскольку я борюсь с этим с понедельника на прошлой неделе. Может быть, PowerShell - не лучший способ? Я открыт для любой помощи!
В данный момент я запускаю этот сценарий PowerShell:
$files = Get-ChildItem "C:\Users\AnonUser\RestLogs\*" -Include *.log
New-Item C:\Users\AnonUser\RestLogs\CleanedLogs.txt -ItemType file
foreach ($f in $files){
$date = $f.BaseName.Substring(22,8)
(Get-Content $f) | Where-Object { ($_ -match 'Downloaded' -and $_ -match 'SAP')} | ForEach-Object {$_ -replace " ", ","}{$_+ ','+ $date} | Add-Content CleanedLogs.txt
}