содержание grep между двумя стартовыми скобками

Ниже представлен вывод файла, который я хочу получить

[1] RsyncCommand: 0 Number of files: 18 Number of files transferred: 0 Total file size: 24.01M bytes Total transferred file size: 0 bytes Literal data: 0 bytes Matched data: 0 bytes File list size: 354 File list generation time: 0.002 seconds File list transfer time: 0.000 seconds Total bytes sent: 424 Total bytes received: 69 total size is 24.01M speedup is 48701.73 (DRY RUN) [2] RsyncCommand: 0 Number of files: 21 Number of files transferred: 0 Total file size: 5.22M bytes Total transferred file size: 0 bytes Literal data: 0 bytes Matched data: 0 bytes File list size: 507 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 586 Total bytes received: 78 total size is 5.22M speedup is 7862.54 (DRY RUN) [3] RsyncCommand: 0 Number of files: 54 Number of files transferred: 0 Total file size: 63.67M bytes Total transferred file size: 0 bytes Literal data: 0 bytes Matched data: 0 bytes File list size: 1.56K File list generation time: 0.002 seconds File list transfer time: 0.000 seconds Total bytes sent: 1.75K Total bytes received: 185 total size is 63.67M speedup is 32988.24 (DRY RUN) 

Я хочу вывод, если я grep 2

 [2] RsyncCommand: 0 Number of files: 21 Number of files transferred: 0 Total file size: 5.22M bytes Total transferred file size: 0 bytes Literal data: 0 bytes Matched data: 0 bytes File list size: 507 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 586 Total bytes received: 78 total size is 5.22M speedup is 7862.54 (DRY RUN) 

Как использовать команду grep для отображения ниже вывода?

  • Как обратные ссылки замедляют поиск регулярных выражений?
  • Как вы создаете команду grep & для соответствия ряду шаблонов в зависимости от того, сколько из них предусмотрено во время выполнения?
  • Извлеките путь к каталогу, содержащий файл с соответствующей строкой
  • Команда wc -w выводит неверный ответ
  • Извлекать подстроки из каждой строки. Эти подстроки разделены запятыми, формат «name = value»
  • Как grep несколько строк, которые начинаются с определенного значения
  • cshell alias: как использовать вложенные одинарные кавычки (') в псевдониме cshell
  • Удалите несколько строк после соответствия шаблону, но только после соответствия шаблону
  • One Solution collect form web for “содержание grep между двумя стартовыми скобками”

    Вы можете использовать grep с -A . Что-то вроде:

     $ grep -A 13 '^\[2\]' inputfile.txt 

    -A указывает количество строк, которые вы хотите включить после матча.

    Но я думаю, что было бы лучше использовать sed в этом случае:

     $ sed -n '/^\[2\]/,/^$/p' inputfile.txt 

    Это напечатает все между [2] и пустой строкой.

    То же самое с использованием awk :

     $ awk -v RS='' -v ORS='\n\n' '/^\[2\]/' inputfile.txt 
    Linux и Unix - лучшая ОС в мире.