Сценарий Bash с несколькими строками и Grep

У меня есть выход из определенной команды, которая может предоставить количество раз, когда приложение было помечено как «использовано» в системе OS X. Команда – mdls .

Результат выглядит аналогично следующему (усеченному)

 ... kMDItemLastUsedDate = 2016-03-15 18:45:00 +0000 kMDItemLogicalSize = 47225668 kMDItemPhysicalSize = 57065472 kMDItemUseCount = 90 kMDItemUsedDates = ( "2016-02-02 06:00:00 +0000", "2016-02-03 06:00:00 +0000", "2016-02-04 06:00:00 +0000", "2016-02-05 06:00:00 +0000", "2016-02-09 06:00:00 +0000", "2016-02-10 06:00:00 +0000", "2016-02-11 06:00:00 +0000", "2016-02-12 06:00:00 +0000", "2016-02-13 06:00:00 +0000", "2016-02-14 06:00:00 +0000", "2016-02-15 06:00:00 +0000", "2016-02-16 06:00:00 +0000", "2016-02-17 06:00:00 +0000", "2016-02-18 06:00:00 +0000", "2016-02-19 06:00:00 +0000", "2016-02-20 06:00:00 +0000", "2016-02-21 06:00:00 +0000", "2016-02-22 06:00:00 +0000", "2016-02-23 06:00:00 +0000", "2016-02-24 06:00:00 +0000", "2016-02-25 06:00:00 +0000", "2016-02-26 06:00:00 +0000", "2016-02-27 06:00:00 +0000", "2016-03-02 06:00:00 +0000", "2016-03-05 06:00:00 +0000", "2016-03-07 06:00:00 +0000", "2016-03-09 06:00:00 +0000", "2016-03-10 06:00:00 +0000", "2016-03-11 06:00:00 +0000", "2016-03-12 06:00:00 +0000", "2016-03-13 06:00:00 +0000", "2016-03-15 05:00:00 +0000" ) kMDItemVersion = "9.0.3" ... 

Из этого списка я действительно хочу только просмотреть конкретные записи, связанные с kMDItemUsedDates . Я не знаю, сколько строк может содержать эта запись в любой системе, она может быть 1 или может быть 32.

Как обработать этот вывод, чтобы иметь возможность получать ТОЛЬКО счет количества записей даты, относящихся к массиву kMDItemUsedDates ? Важно отметить, что даты-штампы сами по себе не уникальны в этом командном выпуске.

  • Grep для конкретного элемента
  • список выбираемых единиц для журнала
  • Как grep многострочный журнал postgresql?
  • 'ls -1': список имен файлов без расширения
  • Не удается найти мой ввод в строке с помощью grep
  • Как я могу заставить grep работать с «->» как шаблон?
  • Очень странное поведение с grep и IFS
  • Шаблон соответствия \\\ ", используя grep
  • 2 Solutions collect form web for “Сценарий Bash с несколькими строками и Grep”

     perl -nE '$c++ if m/^kMDItemUsedDates\s+=\s+\(/..m/^\)/; END { say $c - 2 }' 

    Сопоставьте и увеличьте счетчик между стартовой и конечной строками, затем распечатайте этот счет, минус включенный счетчик для первой и последней строк. Подайте файл, файлы или стандартный ввод.

    Следующее может подсчитать выбранные строки, если вывод будет пропущен через:

     sed -n '/kMDItemUsedDates\s*= (/{:1;n;/)/!{p;b1;};}' | wc -l 

    вариант 2:

     sed '/kMDItemUsedDates\s*= (/,/)/!d;/[()]/d' | wc -l 
    Linux и Unix - лучшая ОС в мире.