Wie führt man eine mehrzeilige Suche in Less durch?

Wie führt man eine mehrzeilige Suche in Less durch?

Können Sie in nach einem Muster lesssuchen /, das einen Wagenrücklauf und eine neue Zeile enthält? Ich weiß, dass Ihr Muster mit einer Zeile enden kann, indem $(vonWie schließe ich Zeilenumbrüche in eine Suche in Less ein?), aber ich brauche ein Muster, das mit Text übereinstimmt, der sich über mehrere Zeilen erstreckt.

Ich habe es versucht \n, aber dabei wird nur nach dem nZeichen gesucht.

Antwort1

Eine Suche über Zeilengrenzen hinweg ist nicht möglich, da die Suchfunktion in lessjeweils nur einer durch Zeilenumbrüche getrennten Zeile arbeitet. Dies gilt unabhängig von der Systemimplementierung von regulären Ausdrücken (GNU, POSIX, PCRE usw.).

Bitte beachten Sie, dass ich kein offizielles Quellcode-Repository für die Hauptentwicklung von finden konnte less, aber zum Zwecke der Codeüberprüfung hier stammen die folgenden Links aus dem FreeBSD-Beitragsbaum.

SehenSuche.c:Suchbereich()zur Durchführung der Suchoperation. Die Schleife darin ruftZeile.c:forw_raw_line()um den nächsten durch Zeilenumbrüche getrennten Inhaltsblock abzurufen. Dieser Block wird übergeben anmatch.c:match_pattern()wo das Suchmuster (regulärer Ausdruck) ausgeführt wird.

Um mehrere Zeilen abzugleichen, müssen Sie ein anderes Tool verwenden. Eine Möglichkeit besteht darin, in Ihren Editor zu wechseln und dessen Suchfunktionen zu verwenden, wie von anderen vorgeschlagen. Sie können den Editor aufrufen, indem Sie vdrücken less.

Antwort2

Ich bin nicht sicher, wie das in geht less, aber Sie können dasselbe in erreichen vim.

http://vim.wikia.com/wiki/Suche_über_mehrere_Zeilen

/PATTERN1\\_.\\{-}PATTERN2

Das Atom \\_.findet alle Zeichen, einschließlich des Zeilenendes. Das Multi \\{-}findet so wenige Übereinstimmungen wie möglich.

Antwort3

lessverwendet eddie Regex-Syntax und unterstützt leider keine mehrzeilige Übereinstimmung.

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 dieser Syntaxteil in Folgendem verwendet wurde less:

RE_DOT_NEWLINE: Wenn dieses Bit gesetzt ist, dann gleicht der Operator „Beliebiges Zeichen ab“ einen Zeilenumbruch ab; wenn dieses Bit nicht gesetzt ist, dann stimmt das nicht überein.

Ich kann also Muster verwenden, .+um Zeilenumbrüche abzugleichen. Aber nein, das passiert nicht.

verwandte Informationen