In less
können Sie mit Suche /nach einem Muster , das einen Wagenrücklauf und Newline enthält? Ich weiß, dass Ihr Muster mit einer Zeile enden kann $
(von Wie füge ich in weniger Zeilen neue Zeilen in eine Suche ein? ), Aber ich benötige das Muster, um mit Text übereinzustimmen , der sich über mehrere Zeilen erstreckt.
Ich habe es versucht \n
, aber das sucht nur nach dem n
Charakter.
\n+
1 oder mehr Zeilenwechsel versucht ?less
(search.c:search_range()
) nicht möglich . Die Such- / Übereinstimmungsoperation wird jeweils für eine einzelne durch neue Zeilen getrennte Zeile ausgeführt, sodass keine Übereinstimmung über Zeilengrenzen hinweg möglich ist. Sieheline.c:forw_raw_line()
für die Implementierung von "readline", wie von aufgerufensearch_range
.Antworten:
Es ist nicht möglich, Übereinstimmungen über
less
Zeilengrenzen hinweg zu suchen, da die Suchfunktion jeweils nur für eine durch neue Zeilen getrennte Zeile ausgeführt wird. Dies ist unabhängig von der Regex-Implementierung des Systems (GNU, POSIX, PCRE usw.) der Fall.Bitte beachten Sie, dass ich kein offizielles Quellcode-Repository für die Hauptentwicklung von gefunden habe
less
. Zum Zwecke der Codeüberprüfung stammen die folgenden Links jedoch aus dem FreeBSD-Beitragsbaum.Siehe search.c: search_range () für die Implementierung der Suchoperation. Die Schleife darin ruft line.c: forw_raw_line () auf, um den nächsten durch neue Zeilen getrennten Inhaltsblock abzurufen. Dieser Block wird an match.c: match_pattern () übergeben, wo das Suchmuster (regulärer Ausdruck) ausgeführt wird.
Um eine Übereinstimmung über mehrere Zeilen hinweg zu erzielen, müssen Sie ein anderes Tool verwenden. Eine Möglichkeit besteht darin, in Ihren Editor zu wechseln und die von anderen vorgeschlagenen Suchfunktionen zu verwenden. Sie können durch Drücken der Editor aufrufen
v
inless
.quelle
Ich bin mir nicht sicher, wie ich es anstellen soll
less
, aber Sie können das Gleiche auch anstellenvim
.http://vim.wikia.com/wiki/Search_across_multiple_lines
Das Atom
\\_.
findet jedes Zeichen einschließlich des Zeilenendes. Das Multi\\{-}
entspricht so wenig wie möglich.quelle
less
verwendet dieed
Regex-Syntax und unterstützt leider keinen mehrzeiligen Abgleich.https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax
Ich hatte gehofft, das auch zu finden, oder zumindest herauszufinden, ob dieses Syntaxbit verwendet wurde in
less
:So kann ich
.+
Muster verwenden, um Zeilenumbrüche abzugleichen. Aber nein, das tut es nicht.quelle