Вы можете попросить grep вывести соответствующую часть каждой строки с помощью -o
, а затем использовать uniq -c
для подсчета результатов:
grep "$QUERY" "$FILE" | grep -o "^\S* [0-2][0-9]:" | sed 's/^\S* //' | uniq -c
Команда sed
предназначена для сохранения толькодвузначный час и двоеточие, которое вы также можете удалить с помощью другого выражения sed, если хотите.
Предостережения: это решение работает с GNU grep и GNU sed и не будет выдавать никакого вывода, вместо «0»,в течение нескольких часов без записей в журнале.Спасибо @EdMorton за то, что они указали на эти проблемы в комментариях и другие проблемы, которые были исправлены в ответе выше.