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

Я бы хотел найти текст, который можно разделить на несколько строк в файле. Grep, который игнорирует разрывы строк и возвращает соответствующий диапазон строк.

например, я бы искал is an example file и ожидал, что он будет найден в следующем файле:

Это

пример файла.

Чтобы не зависеть от ведущих или конечных пробелов, было бы лучше всего игнорировать все формы белого пространства (в идеале, обрабатывать любую последовательность белого пространства как одно пространство).


Одно неидеальное решение – tr '\n' ' ' | grep tr '\n' ' ' | grep , который различает совпадения и не совпадения, но не показывает совпадения и не имеет большого отношения к большим файлам.

  • строка grep, где следующая строка не содержит строки
  • Как фильтровать базовые csv по столбцам
  • Как я могу найти, какие csv-файлы связаны (т. Е. Имеют ссылки на внешние ключи) другим?
  • Количество строк с определенным значением в столбце для всех файлов в каталоге рекурсивно
  • Как заменить токены из одного файла данными из другого?
  • Как предоставить программе дополнительное имя / метку для поиска?
  • Поиск значений в 2 столбцах из CSV
  • Может ли grep использоваться для поиска файлов с некоторой строкой в ​​их именах?
  • 2 Solutions collect form web for “Как искать текст в файле, игнорируя новые строки?”

    GNU grep может это сделать

     grep -z 'is\san\sexample\sfile.' file 

    Чтобы выполнить некоторые моменты, возникающие в комментариях, есть некоторые модификации сценария:

      grep -oz '^[^\n]*\bis\s*an\s*example\s*file\.[^\n]*' file 

    Что касается огромных файлов, у меня нет воображения ограничения памяти, но в случае проблемы вы можете использовать sed

     sed '/\bis\b/{ :1 N /file\.\|\(\n.*\)\{3\}/!b1 } /\<is\s*an\s*example\s*file\./p D' file 

    которые сохраняют не более 4 строк (из-за 4 слов в шаблоне) в памяти ( \(\n.*\)\{3\} ).

    Попробуй это:

     pcregrep -M '\bThis\s+is\b' <<EOT This is an example file. EOT 
    Interesting Posts

    Что такое «вино: плохой формат EXE для Z: \ m \ Desktop \ PortForward Network Utilities.desktop» означает?

    Как добавить временную метку unix для имени файла, которое находится внутри аргумента?

    Определить процесс

    Удалите несколько строк из файла, используя grep

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

    удалять дубликаты на основе значения другого столбца

    Xbox Один контроллер работает в Steam, но не работает в играх

    Как показать числовую последовательность символов строки?

    lsmod не показывает модуль, если не используется arch-chroot

    Полноэкранный режим не работает в xmonad

    Как разрешить доступ без полномочий root к Nexus 7 2013 LTE (deb) через adb и fastboot?

    netcat: отправить текст в службу эха, прочитать ответ, затем выйти

    Должны быть авторизации для привилегий, и они все еще должны быть явно указаны или теперь включены в solaris. *?

    Linux: создание сеансов «экрана» сохраняется в Debian «jessie»

    Отфильтровать список файлов на основе атрибутов файлов

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