Filtern mit grep auf Teilstring eines Teilstrings (Gruppe)

Gast #7784611
Lesenswert?
• ▲
▼

Hallo,

ich suche nach einer Möglichkeit mit grep einen Teistring zurück zu geben, genauer einen Teilstring eines Teilstring.

Aktuell handelt es sich um mehrere Leistungsdaten nach dem Schema (aber nicht Zeilenweise getrennt!):

Leistung DC1 = 123.4 W Leistung DC2 = x.x W Leistung DC3 = xx.x W Leistung DC4 = xxx.x W

plus weitere Daten und ich möchte z.B. nur den Wert der Leistung DC1 (mit Einheit) haben: 123.4 W

Aktuell mache ich es über:

grep -oE 'Leistung DC1 = [0-9]+[.][0-9] W' | grep -oE '[0-9]+[.][0-9] W'

frage mich aber ob es mit grep nicht auch in einem Statement geht.

Es ist explizit keine Lösung mit awk, sed, cut, oder sonst einem weiteren Tool gesucht, die kann ich mir selber zusammenreimen, es geht mir nur um grep.

Hatte im Prinzip auf so etwas wie match groups gehofft: grep -oE '(Leistung DC1 = )([0-9]+[.][0-9] W)' und gib mir nur die 2. Matchgroup.

#7784620
Lesenswert?
• ▲
▼

Hast du dir schon mal ripgrep angesehen?

Außerdem gehören das Pipen und die Zusatznahmen (z.B. ein Buchstabe vor grep) wie auch die Einbindung anderer Programme zu grep bzw. auch zur Unix-Philosophie. ripgrep hilft eventuell dabei, einzugrenzen, was grep nicht kann.

Gast #7784720
Lesenswert?
• ▲
▼

Tic T. schrieb:

Das könnte evtl mit perl regex und \k funktionieren.

Jop, genau so ist es (Kleinigkeit: \K statt \k):

grep -oP 'Leistung DC1 = \K[0-9]+[.][0-9] W'

liefert genau was ich brauche. Danke!

Wobei ich dann mit perl regex auch die vereinfachte Schreibweise nutzen kann:

grep -oP 'Leistung DC1 = \K\d+.\d W'

Beitrag #7784737 wurde von einem Moderator gelöscht.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.