Как grep для нескольких шаблонов на нескольких строках?

Точнее

Some text begin Some text goes here. end Some more text 

и я хочу извлечь весь блок, который начинается с «begin» до «end»

с awk мы можем сделать

 awk '/begin/,/end/' text 

как сделать с grep ? Есть ли какие-либо grep реализации на каком-то * nix, с которым это можно сделать?

  • вкладка grep и символ звезды
  • Будет ли zgrep рекурсивно искать zip-файлы, встроенные в zip-файлы?
  • Подключения к серверу мониторинга - проблема форматирования Netstat
  • Почему я не могу использовать эту команду для командной строки?
  • Перечислить процесс по имени, исключая grep
  • Как игнорировать ссылки grep из файла?
  • awk, sed, grep, perl ... которые распечатываются в этом случае?
  • Греп на одной линии
  • One Solution collect form web for “Как grep для нескольких шаблонов на нескольких строках?”

    grep , то есть g/re/p – это основной инструмент, позволяющий сопоставлять строки, которые соответствуют e epression.

    Вы хотите больше здесь, как s sream it itor:

     sed '/^begin$/,/^end$/!d' 

    или более общий инструмент обработки текста с расширенным языком, например awk , perl … как вы уже выяснили.

    Сказав это, некоторые реализации grep могут пойти немного дальше.

     pcregrep -M '(?s)^begin$.*?^end$' 

    Это использует многострочный режим ( -M ); (?s) переключает флаг s в регулярном выражении PCRE, так что . также соответствует символам новой строки.

    С текущей версией pcregrep она не будет гарантированно работать, если begin и end не более чем на 20kiB (или указанный размер буфера).

    Например, он будет соответствовать

     (seq 12091; echo begin; seq 4315; echo end; seq 10) | pcregrep -M '(?s)^begin$.*?^end$' 

    Но не в:

     (seq 12091; echo begin; seq 4316; echo end; seq 10) | pcregrep -M '(?s)^begin$.*?^end$' 

    Или с GNU grep созданным с поддержкой PCRE, и при условии, что файл не содержит символов NUL:

     grep -zoP '(?s)^begin$.*?^end$' 

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

    В любом случае, grep – это не лучший способ пойти сюда.

    Interesting Posts

    Каков правильный способ использования альтернативного двоичного кода

    Сохранение и восстановление вкладок терминала с заголовком пользовательских вкладок

    Как узнать, сколько строк содержит текстовый файл, не просматривая его?

    BSD Mail – Единый адрес отправки

    Какое имя формата имеет видео MP4 как вывод в ffmpeg?

    libmad – gcc: ошибка: непризнанная опция командной строки '-fforce-mem'

    Ошибка создания контейнера LUKS: нет устройства с контуром

    Как я могу узнать, почему у меня есть разрешения на чтение файла?

    Установка пика – выбранный вами CPU не поддерживает набор инструкций x86-64

    Как копирование Debian iso непосредственно на USB-накопитель?

    Типы файловой системы для зашифрованных разделов

    Как изменить мою ассоциацию файлов / url на всех моих DM / WM без использования графического интерфейса?

    linux + соответствует IP ADDRESS с 3 октетами или с 4 октетами

    Где zdump получает все эти временные переходы?

    Эквивалент APTonCD для Fedora

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