Regex mit egrep



  • Hi,

    echo "788h\\blub\bla\foo\04-lala\hihi\hoho(())))=)=" | egrep -o '\\\\.+\[\w-]*'
    

    Sollte eigentlich folgendes ausgeben:

    \\blub\bla\foo\04-lala\hihi\hoho
    

    http://regex101.com/ erkennt das Muster.
    Was mache ich bei egrep falsch?

    Danke, im Voraus!

    EDIT: https://www.gnu.org/software/findutils/manual/html_node/find_html/egrep-regular-expression-syntax.html

    L. G.,
    IBV



  • Hi,

    dein Fehler hat nicht mit egrep zu tun, sondern mit der Konsole(bash nehme ich an).
    Wenn du links single quotes nimmst kommt fast das erwartete Ergebnis raus, nur das hoho fehlt am Ende.
    Woran das liegt, kann ich dir jetzt aber auch nicht sagen.



  • Ah, verstehe. Double Quotes evaluiert Ausdrücke. D. h. aus "\\" wird '\'.
    \w versteht der irgendwie nicht, aber [a-zA-Z0-9\-] schon.
    Damit geht es nun:

    echo '788h\\blub\bla\foo\04-lala\hihi\ho-9hO(())))=)=' | egrep -o '\\\\.+\[a-zA-Z0-9\-]*'
    

    Thx!

    L. G.,
    IBV



  • Hi,

    ich würde gerne, dass bei diesem Text

    788h\\blub\bla.foo\foo\04-lala\hihi\ho-9hO\\dassdf\sdfsd(())))=)=
    

    folgendes ausgegeben wird:

    \\blub\bla.foo\foo\04-lala\hihi\ho-9hO
    

    Leider wird folgendes ausgegeben:

    \\blub\bla.foo\foo\04-lala\hihi\ho-9hO\\dassdf\sdfsd
    

    Mein regex:

    \\\[a-zA-Z0-9\-\.\]*\[a-zA-Z0-9\-]*
    

    \\\ darf nur am Anfang vorkommen.
    Jemand eine Idee?

    Danke, im Voraus!

    L. G.,
    IBV



  • Mit

    \\(\[^\\\'\"\?]+)*
    

    geht es nun, aber egrep macht nun wieder Probleme:

    compname@user:~/Dokumente$ egrep --binary-files=text -o '\\(\[^\\\'\"\?]+)*' < blub.lnk 
    bash: Syntaxfehler beim unerwarteten Wort »)«
    

Log in to reply