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

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

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

Это

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

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


Одно неидеальное решение – tr '\n' ' ' | grep tr '\n' ' ' | 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 
  • Как выполнить grep на FTP?
  • grep, как подавить отображение несогласованного файла?
  • Может ли grep использоваться для поиска файлов с некоторой строкой в ​​их именах?
  • Обзор результатов GREP и FIND в Xemacs
  • Перечислить все файлы в каталоге рекурсивно, но исключить сами каталоги
  • Как получить количество ссылок на файлы в папке с этими ссылками?
  • Как я могу найти, какие csv-файлы связаны (т. Е. Имеют ссылки на внешние ключи) другим?
  • Количество строк с определенным значением в столбце для всех файлов в каталоге рекурсивно
  • Почему команда «find | grep 'filename' 'намного медленнее, чем «найти« имя файла »?
  • Отправка настраиваемого контента на основе определенного поиска в файле журнала
  • Как заменить токены из одного файла данными из другого?
  • Linux и Unix - лучшая ОС в мире.