В less
, вы можете найти с /помощью шаблона, который содержит возврат каретки и перевод строки? Я знаю, что ваш шаблон может заканчиваться строкой с помощью $
(из Как включить новые строки в поиск за меньшее время? ), Но мне нужен шаблон, чтобы соответствовать тексту, который занимает несколько строк.
Я пытался \n
, но это только поиск n
персонажа.
\n+
на 1 или более новых строк?less
(search.c:search_range()
). Операция поиска / сопоставления выполняется по одной строке с разделителями новой строки за раз, поэтому вы не можете найти соответствие между границами строк. Смотритеline.c:forw_raw_line()
для реализации "readline", как вызваноsearch_range
.Ответы:
Невозможно найти соответствие между границами строк, потому что функция поиска
less
работает по одной строке, разделенной новой строкой, за раз. Это имеет место независимо от реализации системного регулярного выражения (GNU, POSIX, PCRE и т. Д.).Обратите внимание, что я не смог найти официальный исходный репозиторий для основной разработки
less
, но для целей обзора кода здесь ссылки, которые следуют, взяты из дерева ресурсов FreeBSD.Смотрите search.c: search_range () для реализации операции поиска. Цикл в нем вызывает line.c: forw_raw_line () для получения следующего блока содержимого, разделенного новой строкой . Этот блок передается в match.c: match_pattern (), где выполняется шаблон поиска (регулярное выражение).
Чтобы сопоставить несколько строк, вам нужно использовать другой инструмент. Один из вариантов - зайти в ваш редактор и использовать его возможности поиска, как предлагают другие. Вы можете вызвать редактор, нажав
v
наless
.источник
Не уверен, как это сделать
less
, но вы можете сделать то же самое вvim
.http://vim.wikia.com/wiki/Search_across_multiple_lines
Атом
\\_.
находит любой символ, включая конец строки. Мульти\\{-}
соответствует как можно меньше.источник
less
используетed
синтаксис регулярных выражений и, к сожалению, не поддерживает многострочное сопоставление.https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax
Я также надеялся найти это или, по крайней мере, найти, использовался ли этот синтаксический бит в
less
:Так что я могу использовать
.+
шаблон, чтобы соответствовать новые строки. Но нет, это не так.источник