W less
, można wyszukiwać za pomocą /na wzór, który zawiera znak powrotu karetki i nowego wiersza? Wiem, że twój wzór może kończyć się linią używającą $
(od Jak włączyć nowe wiersze w wyszukiwaniu w mniej? ), Ale potrzebuję wzoru, aby dopasować tekst, który obejmuje wiele linii.
Próbowałem \n
, ale to tylko szuka n
postaci.
\n+
1 lub więcej nowych linii?less
(search.c:search_range()
). Operacja wyszukiwania / dopasowania jest wykonywana na pojedynczej linii rozdzielanej znakiem nowej linii na raz, więc nie można dopasować między granicami linii. Zobaczline.c:forw_raw_line()
implementację „readline” jak wywoływany przezsearch_range
.Odpowiedzi:
Nie można dopasowywać między granicami linii, ponieważ funkcja wyszukiwania
less
działa na pojedynczej linii oddzielonej nową linią. Dzieje się tak niezależnie od implementacji wyrażenia regularnego systemu (GNU, POSIX, PCRE itp.).Zauważ, że nie mogłem znaleźć oficjalnego repozytorium źródłowego dla głównego rozwoju
less
, ale dla celów przeglądu kodu poniższe linki pochodzą z drzewa contrib FreeBSD.Zobacz search.c: search_range (), aby zapoznać się z implementacją operacji wyszukiwania. Pętla w nim wywołuje line.c: forw_raw_line (), aby pobrać następny blok treści rozdzielany znakiem nowej linii. Ten blok jest przekazywany do match.c: match_pattern (), w którym wykonywany jest wzorzec wyszukiwania (wyrażenie regularne).
Aby dopasować do wielu wierszy, musisz użyć innego narzędzia. Jedną z opcji jest wpadnięcie do edytora i korzystanie z jego możliwości wyszukiwania, jak sugerują inni. Można wywołać edytor naciskając
v
wless
.źródło
Nie wiesz, jak to zrobić
less
, ale możesz to zrobić wvim
.http://vim.wikia.com/wiki/Search_across_multiple_lines
Atom
\\_.
znajduje dowolny znak, w tym koniec linii. Wiele\\{-}
dopasowań jest jak najmniej.źródło
less
używaed
składni wyrażeń regularnych i nie obsługuje niestety dopasowywania wieloliniowego.https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax
Miałem również nadzieję to znaleźć, a przynajmniej dowiedzieć się, czy ten bit składniowy został użyty w
less
:Więc mogę użyć
.+
wzorca, aby dopasować nowe linie. Ale nie, nie ma.źródło