Fussballergebnis extrahieren

  • Es scheint wohl schon zu spät zu sein, aber ich bekomm es einfach nicht hin, ein Ergebnis mit sed zu extrahieren.


    Beispiel:
    "FC Bayern 0:5 VDR Profikicker"


    Daraus hätte ich nun das Ergebnis, also 0:5 - was aber auch 10:0 etc. sein könnte.


    Ich habe schon mehreres versucht, aber ich bekomme es nicht hin - z.B.:

    Code
    sed 's/^[[:alpha:]]*\([[:digit:]]\+:[[:digit:]]\+\)[[:alpha:]]*/\1/;'


    Hab mich sogar damit versucht :,(


    Wer kann helfen?


    Danke!

    My VDRs:

    Einmal editiert, zuletzt von dad401 ()

  • Das geht:


    sed -e 's/.*[^[:digit:]]\([[:digit:]]\+:[[:digit:]]\+\)[^[:digit:]].*/\1/;'


    Dein Denkfehler was das [:alpha:] - das passt nur auf Buchstaben. In dem Teil kommen aber durchaus beliebige Zeichen vor - nur das letzte/erste sollte keine Ziffer mehr sein, damit auch wirklich alle Ziffern von der Klammer erfasst werden. Statt auf [^[:digit:]] könnte man natürlich auch einfach auf Leerzeichen matchen:


    sed -e 's/.* \([[:digit:]]\+:[[:digit:]]\+\) .*/\1/;'


    Gruß,


    Udo

  • Super funktioniert :)


    letzteres hatte ich auch schon fast, aber irgendwo ist immer noch ein Zeichen im RA dazwischen, was es mir wohl versaut hat.


    Frage: Wieso muss nach dem .* und davor ein Leerzeichen? - Ich glaube so hatte ich es probiert und es ging nicht. Das Leerzeichen ist doch eigentlich im .* enthalten, oder?!

    My VDRs:

  • Das Leerzeichen bzw. das [^[:digit:]] dient hier nur als Fixpunkt, damit das .* nicht auch noch Ziffern mit verschluckt. Sonst wird aus "FC Bayern 10:5 VDR Profikicker" schnell mal ein 0:5. (Stichwort 'greedy matching')


    Gruß,


    Udo

  • Genau das habe ich wieder bei einem anderen sed-Befehl gemerkt. Was kann man jedoch tun, wenn das letzte Zeichen auch unbekannt ist?


    z.B.
    "FC Bayern 0:5 VDR Profikicker"
    "FC Bayern0:5VDR Profikicker"
    "FC Bayern0:5 VDR Profikicker"
    "FC Bayern 0:5VDR Profikicker"


    Das Beispiel hier klappt hierbei nicht.

    My VDRs:

  • Die erste Version, die ich angeboten habe, sollte das können - sie begrenzt ja den interessanten Teil mit [^[:digit:]] - also mit einem Zeichen, das keine Ziffer ist. (was das gleiche ist wie [^0-9], nur halt 'abgekürzt'.) Allgemeiner gehts nicht. Nur Ergebnisse direkt am Zeilenanfang/ende werden davon nicht gefunden.


    Gruß,


    Udo

  • Aha, Danke - wieder was gelernt :) - ich hatte mich nur ein wenig gewundert wegen dem ^ vor dem digit - aber in diesem Fall ist es ja eine Negation...


    Wenn man sowas nicht öfter braucht, vergisst man schnell etwas :-/

    My VDRs:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!