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.
:
Bearbeitet durch User
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.
Das könnte evtl mit perl regex und \k funktionieren.
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'
:
Bearbeitet durch User
Beitrag #7784737 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.