У меня есть сотни файлов журнала в единственном каталоге, и я хочу автоматизированный способ просмотреть файлы журнала для подсчета количества раз, каждая команда используется.
Таким образом, я хотел бы знать, существует ли сценарий или программное обеспечение, которое сделало бы это и отсортировало бы результаты по наиболее используемым командам и отобразило бы частоту каждой команды. Что-то как статистика.
(редактирование: я нахожусь на Победе XP, и у меня нет проблем при установке программ с этой целью),
С Windows PowerShell Вы могли сделать что-то вроде:
Get-Content *.log |
Where-Object { $_.StartsWith('Command:') } |
Group-Object {
$null = $_ -match '^Command: (\w+)';
$Matches[1]
} |
Select-Object Name,Count
Поскольку мой тест регистрирует, это приводит к выводу как
Name Count
---- -----
foo 2
bar 2
baz 1
Выше кода просто читает файлы журнала линию за линией, продвигая каждую строку через конвейер, это затем фильтрует строки, чтобы только использовать тех, которые запускаются с “Команды”: указывая на команду для следования. Затем те строки сгруппированы в отдельные команды. Это сделано регулярным выражением
^Command: (\w+)
который соответствует строке “Команда”: в начале строки, сопровождаемой одним или несколькими словесными символами. Это предполагает, что название команды сразу следует за двоеточием и пространством; скорректируйте regex соответственно если дело обстоит не так. Название команды получено в группе получения, которая используется для группировки. После этого только имя и частота команд выбраны.
$null =
часть для соответствия должна подавить вывод -match
оператор, который всегда возвращался бы True
здесь. Мы не хотим группироваться True bar
но только bar
.
ETA: В зависимости от того, как точно Ваша входная внешность, Вы могли бы хотеть настроить вещи немного.
Позвольте пустые команды:
^Command: (\w*)
Позвольте произвольные непробелы на названия команды (и пустые команды):
^Command: ([^ ]*)
Что ОС?
Это не идеальная пара к Вашему требованию, но...
grep -i -c Command *.log
получит Вас количество случаев, сломанных файлом. Вы могли затем проанализировать тот вывод для получения общих количеств. Выведите его к текстовому файлу и вытяните его в Excel или что-то. Не чрезвычайно трудный, но по общему признанию не полностью автоматизированный также. Я часто нахожу, что провожу больше времени, ища абсолютно автоматическое решение, чем я делаю использование чего-то вроде этого... Можно получить grep для Windows с помощью cygwin.