Kann ich unter Unix "less" zur nächsten Zeile springen, die KEIN X enthält?

19

Im Unix - lessTool ist es möglich , in die nächste Zeile zu springen , die sich nicht einen bestimmten Ausdruck enthalten?

Manchmal muss ich Dateien durchsehen, die Tausende von ähnlichen benachbarten Zeilen enthalten, die zum Beispiel alle "Computing something " sagen , und ich interessiere mich für die nächste Zeile nach dem aktuellen Block, in der das Wort "Computing" nicht vorkommt.

dehmann
quelle

Antworten:

26

Ja, dies ist eine nicht übereinstimmende Suchfunktion, zum Beispiel:

less file.conf

dann tippst du /und danach sollte !deine letzte Zeile so aussehen:

Non-match /

Geben Sie dann Ihr Muster ein, um beispielsweise Non-match /^#nach der ersten Zeile ohne Anfang zu suchen#

Anstelle von !Zeichen können Sie auch verwenden Ctrl+N.

Casual Coder
quelle
Dies ist perfekt. Ich hätte keine bessere Antwort erwarten können.
Dehmann
4

Als Ergänzung zur Antwort von Casual Coder:

Sie können die Zeilen auch ganz herausfiltern:

<logfile grep -v mypattern |less 

Der Nachteil ist, dass Sie grep beenden und neu starten müssen, um das Muster zu ändern. Der Vorteil ist, dass die Linien, die Sie nicht sehen möchten, ausgeblendet sind, wodurch es einfacher wird, interessante Muster in den Linien zu erkennen, an denen Sie interessiert sind.

sleske
quelle
1

Sie können nicht nur zwischen Zeilen springen, die kein X enthalten, sondern Sie können auch die Zeilen ausblenden, die X enthalten, indem Sie lessden &Regex-Filterbefehl verwenden.

less file.conf

Geben Sie &!^Computingdann den enterSchlüssel ein und alle diese Zeilen werden ausgeblendet.

Mit können Sie noch in den restlichen Zeilen suchen /.

Sobald Sie die gewünschte Zeile gefunden haben, können Sie die anderen zurückholen, wenn Sie deren Kontext benötigen. Geben Sie &dann den enterSchlüssel ein, um den Filter zu entfernen.

Wil
quelle