Как я могу считать команды в файле журнала?

У меня есть сотни файлов журнала в единственном каталоге, и я хочу автоматизированный способ просмотреть файлы журнала для подсчета количества раз, каждая команда используется.

  • Файлы журнала являются текстовыми файлами
  • Существуют 100 + различные команды
  • они все запускают как "Команда": и затем название команды.
  • Это - одна строка на команду
  • другие строки должны быть проигнорированы

Таким образом, я хотел бы знать, существует ли сценарий или программное обеспечение, которое сделало бы это и отсортировало бы результаты по наиболее используемым командам и отобразило бы частоту каждой команды. Что-то как статистика.

(редактирование: я нахожусь на Победе XP, и у меня нет проблем при установке программ с этой целью),

0
задан 25.01.2010, 20:06

2 ответа

С 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: ([^ ]*)
    
2
ответ дан 24.11.2019, 06:58

Что ОС?

Это не идеальная пара к Вашему требованию, но...

grep -i -c Command *.log

получит Вас количество случаев, сломанных файлом. Вы могли затем проанализировать тот вывод для получения общих количеств. Выведите его к текстовому файлу и вытяните его в Excel или что-то. Не чрезвычайно трудный, но по общему признанию не полностью автоматизированный также. Я часто нахожу, что провожу больше времени, ища абсолютно автоматическое решение, чем я делаю использование чего-то вроде этого... Можно получить grep для Windows с помощью cygwin.

0
ответ дан 24.11.2019, 06:58

Теги

Похожие вопросы