Как подсчитать количество экземпляров слова, начинающегося с другого слова

Мне нужно grep журнал ошибок MySQL, начиная с сегодняшней даты, отформатированной так:

 `date +"%y%m%d"` (140710) 

И ищите все экземпляры слова, partitioned на partitioned .

Я пробовал разные вещи безрезультатно. Казалось, это сработало:

 more +/"`date +"%y%m%d"`" mysql-error.log | grep -c partitioned 

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

Мне нужно, чтобы он возвращал ноль, если нет записей с сегодняшнего дня, а не grep весь файл и подсчет результатов.

Есть ли лучший способ сделать это, используя sed или awk или что-то еще?


С технической точки зрения, я полагаю, что мне нужно подсчитывать: } partitioned { за ним следует строка альфа-числовых символов}}, потому что порция {(без какой-либо строки)} может произойти и не должна учитываться.

Однако это не строгое требование. Я был бы счастлив просто подсчитывать экземпляры слова partitioned .

Вот пример файла журнала:

 140109 12:25:07 [Note] WSREP: view(view_id(PRIM,c4819ddf-7952-11e3-89fc-4f9f1bfa267f,3) memb { c4819ddf-7952-11e3-89fc-4f9f1bfa267f, } joined { } left { } partitioned { f85c2e70-7952-11e3-a759-aa8332246e85, }) 140109 12:25:07 [Note] WSREP: Shifting JOINED -> SYNCED (TO: 85) 

  • cut / grep и df -h
  • Сценарий Awk работает только в том случае, если я редактирую текстовый файл вручную
  • Использование grep / awk / sed для сортировки и объединения двух файлов
  • Как выбрать имена файлов с последовательными числовыми суффиксами?
  • Открытие приложений на другом рабочем столе из командной строки
  • Открытие терминала, отличного от xterm, запуск команды на нем и не закрытие терминала после его успешного завершения
  • Предотвращать запуск определенных строк скрипта как root
  • Список всех html-тегов в файле
  • 2 Solutions collect form web for “Как подсчитать количество экземпляров слова, начинающегося с другого слова”

    С помощью GNU sed anhd grep вы можете попробовать:

     sed -n "/$(date +%y%m%d)/,\$p" file | grep -c partitioned 

    /pattern/,$ сопоставил первый шаблон в конце файла.

    С вашим вводом:

     $ sed -n "/$(date +%y%m%d)/,\$p" 1.txt | grep -c partitioned 1 

    Без соответствующей даты:

     $ sed -n "/$(date +%y%m%d)/,\$p" 1.txt | grep -c partitioned 0 

    Вы могли бы попытаться объединить две greps вместе:

     grep `date +"%y%m%d"` mysql-error.log | grep -c partitioned 

    Или даже проще:

     grep -c "`date +%y%m%d`.*partitioned" mysql-error.log 

    РЕДАКТИРОВАТЬ

    Поскольку дата и слово «разделенные» находятся на разных строках, тогда:

     d=$(date +"%y%m%d"); awk '/'$d'/,EOF {print $0}' mysql-error.log | grep -c partitioned 

    Или:

     awk '/'$(date +%y%m%d)'/,EOF {print $0}' mysql-error.log | grep -c partitioned 
    Interesting Posts

    Можно ли указать команду at в одной строке?

    Найти имя хоста или IP удаленного сеанса ssh в Solaris

    Каковы потенциальные последствия перехода орехов с разреженными файловыми vdev для миграции LVM на ZFS?

    Как вычесть строки, наоборот, только если больше, чем предыдущая строка

    Почему мое сетевое соединение продолжает отсоединяться?

    Как установить местоположение файла дампа ядра (и имя)?

    su options – запуск команды в качестве другого пользователя

    Возможно ли использовать мышь в ярлыке?

    Как избежать <или> в параметре в оболочке?

    Команда dd: поиск скорости чтения / записи для вспышки / SD?

    Горячий, чтобы заставить diff проверить ссылку на символическую ссылку?

    Параметры keep-alive TCP не соблюдаются

    Невозможно добавить принтер: неавторизованный при добавлении принтера с использованием веб-интерфейса CUPS

    Как установить выходной звук HDMI по умолчанию на Ubuntu 16.04

    В чем опасность использования «-assume-yes» с apt-get?

    Linux и Unix - лучшая ОС в мире.