Как мне найти файлы, содержащие определенный текст, содержащий символы новой строки и множество других символов, всевозможные кавычки и обратные косые черты с помощью терминала?
grep
отчасти основано на строках, поэтому сопоставление с границами строк может быть проблематичным. Если у вас есть свободная память, сравните ее со всем файлом, например, perl
:
$ (echo fish; echo cat; echo dog; echo frog) \
| perl -0777 -nE 'say $1 if m/(cat.dog)/s'
Бит «всевозможные кавычки и обратная косая черта», скорее всего, будет в основном избегать правил интерполяции оболочки, например через '\''
типа трюки или посмотреть ascii(7)
а затем в perl используйте соответствующий \047
или \x52
или что угодно, если необходимо. Не хватает памяти для загрузки файла, strings(1)
может сначала использоваться для уменьшения объема данных для поиска.