Suchen des letzten Elements in einer Zeile mit grep


12

Ich versuche, das letzte Wort oder die letzte Phrase mit grep für ein bestimmtes Muster zu nehmen. In diesem Beispiel ist es das vom letzten Komma bis zum Ende der Zeile:

Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value

Die gewünschte Ausgabe für diese Zeile wäre also "Great Value". Alle Zeilen sind ebenfalls unterschiedlich lang, haben jedoch immer ein einzelnes Komma vor den letzten Wörtern.

Grundsätzlich möchte ich einfach vom letzten Komma bis zum Zeilenende ausgeben. Vielen Dank!


9
Hast du schon mal darüber nachgedacht awk -F, '{print $NF}'?
Steeldriver

Das letzte Element in der Linie zu bekommen ist eine leichte Aufgabe, aber wie sollte diese Linie identifiziert werden? Ich meine, wie kann ein Befehl oder ein Skript in die Zeile schauen und sagen "Ja, das ist der eine"? Was ist das Muster, das diese Linie kennzeichnet?
Sergiy Kolodyazhnyy

5
grepist nicht das Werkzeug für diesen Job.
Kusalananda

Antworten:


27

Hier:

grep -o '[^,]\+$'
  • [^,]\+stimmt mit einem oder mehreren Zeichen überein, die nicht ,am Ende der Zeile stehen ( $)

  • -o druckt nur den passenden Teil

Beispiel:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

Lief wie am Schnürchen! Ich habe versucht, eine Kombination aus "." und andere Ausdrücke vor, aber das funktioniert viel besser, sehr geschätzt.
Reversebottle

hmm, ich hätte verwendet -Eound dann nicht gebraucht, um zu entkommen+
Baldrickk

@Baldrickk aktiviert -EERE, deshalb.
Heemayl

@heemayl ja, ich weiß warum. Ich neige dazu, es zu verwenden, da es eine allgemeinere Regex-Syntax ist
Baldrickk

14

awkMöchte immer eine Lösung sehen, also hier ist sie (die richtige Lösung!):

% awk -F, '{print $NF}'  <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

3
Dies sollte die richtige Antwort sein. Während Sie grep verwenden können, können Sie auch eine Schraube mit einem Hammer schlagen.
Wilsotc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.