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

Мне нужно 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) 

  • Открытие приложений на другом рабочем столе из командной строки
  • Команда SSH ведет себя по-разному в Expect Script
  • Команда чтения: как проверить, что пользователь набрал что-то
  • Как переименовать несколько файлов в их содержание «сумма MD5?
  • Экспортируйте плейлист m3u в каталог, чтобы они отображались в списке воспроизведения
  • Выполнять команду в sftp-подключении через скрипт
  • Запуск сценариев оболочки через веб-сайт
  • Возможно ли иметь комментарии в многострочных командах в рыбе?
  • 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

    Сценарий оболочки для извлечения части имени файла из входного файла и преобразования его в выходной файл

    Как установить определенный драйвер видео на Fedora?

    Как я могу проверить, что удаленный компьютер находится в сети для ssh / script acess?

    Просмотр групп каталогов и настройка www-данных в качестве администратора каталога для разрешения удаления контента

    В чем разница между двоичным файлом и файлом .exe?

    извлекать информацию о хосте vmware из гостевого

    Как перечислить n-й самый младший файл (без разбора ls!)

    Мостовой интерфейс TAP для виртуального бокса

    HTTP-прокси за nginx

    как заставить aspell игнорировать слова верхнего регистра (акронимы)?

    USB-сенсорный экран не работает с debian 3.8.13 (BeagleBone Black)

    сортировка потоков в mutt

    «Конфликтующее распространение: InRelease (ожидаемый выпуск, но получил релиз + 1)», что это такое?

    Почему «$ sudo echo 'yo» работает, хотя эхо – это встроенная в оболочку функция?

    Почему cron перестала обрабатывать команды?

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