GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man eine Datei ausgeben und Zeilen ignorieren, die mit „?“ beginnen?

Ich mache svn status --show-updates und dann möchte ich entweder

  • F1:
    Zeilen ignorieren (nicht anzeigen), die mit ? beginnen
  • F2:
    Nur Zeilen anzeigen, die mit * beginnen Beachten Sie, dass vor dem * einige Leerzeichen stehen. Das bedeutet, dass * ist nicht das erste Zeichen in der Zeile.

Wie kann ich das tun?

Akzeptierte Antwort:

Sie können diese Bedingungen mit regulären Ausdrücken ausdrücken und grep verwenden um die Ergebnisse danach zu filtern.

Der erste ist ^? . Das Karat ist ein Sonderzeichen, das den Beginn einer Zeile darstellt; so entspricht der Ausdruck dem Anfang der Zeile, unmittelbar gefolgt von einem ? .

Der zweite ist ^ *\* . Der * ist ein Sonderzeichen, das das vorhergehende Zeichen qualifiziert – es bedeutet, dass das vorhergehende Zeichen null oder mehrmals vorkommen kann. Seit * ein Sonderzeichen ist, muss das gesuchte Zeichen maskiert werden, also \* . Dieser Ausdruck entspricht also dem Beginn einer Zeile, gefolgt von null oder mehr Leerzeichen, gefolgt von einem Sternchen.

Verwenden Sie für Ihre erste Bedingung das -v Option für grep um die Ergebnisse zu negieren.

Also endlich,

svn status --show-updates | grep -v '^?'

oder

svn status --show-updates | grep '^ *\*'

Reguläre Ausdrücke sind sehr leistungsfähig, sodass viele Unix-Tools sie verwenden können. Es lohnt sich sehr, sie zu lernen. Es gibt ein tolles Tutorial auf regular-expressions.info.


Linux
  1. Wie lässt sich Iconv dazu bringen, die Eingabedatei durch die konvertierte Ausgabe zu ersetzen?

  2. Wie leite ich die Ausgabe eines Programms in eine Zip-Datei um?

  3. Wie lösche ich mehrere zufällige Zeilen aus einer Textdatei mit Sed?

  4. Wie man mit der Farbausgabe umgeht

  5. Wie schreibe ich eine Datei mit C in Linux?

So mischen Sie Zeilen in einer Datei unter Linux

So kehren Sie Zeilen in einer Datei zeichenweise in Linux um

Wie kombinieren Sie alle Zeilen, die mit einem Backslash-Zeichen enden?

Wie leitet man die Ausgabe von system() in eine Datei um?

So leiten Sie die Ausgabe des systemd-Dienstes in eine Datei um

So grep ps-Ausgabe mit Headern