Posts by framp

    noch ein kompletter Newbie im Thema Raspberry,

    Willkommen im Forum,


    vermutlich auch mit Linux, denn das ist das Betriebssystem was auf der Raspberry laeuft. Aber zu beiden Theman bist Du hier richtig aufgehoben (:

    Das, was ich vorhin in Beitrag #75 gebracht habe, hat mit Regex so gar nichts zu tun. Das ist das "normale" String-Scanning von Icon.

    Das ist mir nicht so klar geworden. Ich kenne Icon nicht. War nur so mein Eindruck.

    Datei "regexp.icn" zum Einbinden

    Vermutlich wird dann die normale Regex Syntax zu benutzen sein. Du kannst ja mal versuchen damit die IP zu extrahieren. Dann haettest Du die Kombination aus Icon (was Du gut kennst) und Regex (was Du kennenlernen willst (:)

    Offensichtlich hat Icon auch eine eigene Implementierung der Regexfunktionalitaet. :thumbup:


    Allerdings mit einer voellig anderen Syntax als die unter Linux gebraeuchliche. In Java und anderen Programmiersprachen (mir faellt jetzt gerade noch go ein) gibt es auch Regexsupport und es wird immer die gleiche Syntax verwendet. Weiss nicht ob es so geschickt ist sich in den Icon Regex support einzuarbeiten :conf:

    Sollte ich mich auf meine alten Tage wirklich noch damit auseinandersetzen?

    Im konkreten Beispiel muss man nicht parsen. Wir haben ja schon Loesungen gesehen ohne Regex. Aber immer wenn man Dinge parsen bzw Elemente aus Texten extrahieren muss ist ein Regex ein sehr maechtiges und kompaktes Werkzeug. Du findest regex auch bei sed, grep, awk, find, und an vielen anderen Stellen (regex ist ein wichtiger Bestandteil von perl) weil es eben ein maechtiges Tools ist um bestimmte Textstrukturen zu erkennen. Ob Du das noch brauchst kannst Du am besten beurteilen.


    Ich denke wenn Du Dich mal einen Abend konzentriert hinsetzt und eine der vielen Webseiten durchgehst die es zu Regex gibt hast Du das Grundprinzip der Regex verstanden und kannst sie anwenden. So high sophistikatete Dinge wie lookahead und lookbehind habe ich bislang so gut wie nie benoetigt. Damit kannst Du dann auch einfache Grammatiken parsen. Ist aber meiner Meinung Overkill und man sollte dann vielleicht Yacc und Lexx einsetzen denn wenn Regex ein unlesserlicher langer Bandwurm wird ist der nicht mehr wartbar.

    Stimmt. Ich habe jahrzehntelang ifconfig benutzt und bin auch dabei mir ip anzugewoehnen - aber vergesse das doch immer mal wieder :-/


    Jedenfalls kann man das auch mit Regex parsen (:

    Code
    ip -br a s dev wlp3s0 |  LANG=C grep -o -E "([[:space:]])*([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}" | tr -d ' '

    Das macht die Sache aber problematisch, wenn man auf einem Distro-OS entwickelt & testet und optimiert, für ein anderes vorhandenes Distro-OS noch testen & anpassen kann ... und alle anderen Distro-OSse nur Bahnhof verstehen.

    Das Ganze ist immer ein gefrickel. Auch #44 und #45. Wenn ich da den String inet sehe und an I18N denke wo der String ganz anders aussieht hast Du nur Probleme. Am sichersten ist noch wenn Du gegen ein stabiles API gehst. Jegliche Formatierung der API Ausgaben sicher zu parsen ist nahezu unmoeglich.


    Im konkreten Fall finde ich das Parsen nach dem Format einer IP Adresse schon mal ziemlich sicher. Man muss nur die richtige erwischen (nicht die Bcast IP oder die Netmask die ja alle dasselbe Format haben) Nur nach irgendwelchen unspezifischen Texten an einer bestimmten n-ten Position zu parsen ist fuer mich zu unzuverlaessig.

    Seufz ... die Ausgaben sehen leider immer etwas anders aus je nachdem auf welcher Distro man sich bewegt. Bei Dir fehlt das :.

    Code
    ifconfig wlan0 | grep -o -E ":?([[:space:]])*([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}" | head -n 1 | tr -d :

    sollte jetzt sowohl fuer Andreas als auch Dich funktionieren.

    Ja, das ist ein Regex. Ich mag die im Gegensatz zu Dir ;). Er sagt suche mir einen Text der mit : beginnt und dann von einer IP Adresse gefolgt wird. Etwas allgemeiner waere noch

    Code
    ifconfig wlan0 | grep -o -E ":([[:space:]])*([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}" | head -n 1 | tr -d :

    wo noch Leerzeichen zwischen : und der IP Adresse erlaubt sind.

    Die Syntax ist OK. Nur scheint irgendwie der --exclude von -u nicht genutzt zu werden. Deshalb frage ich nach dem tar Aufruf im Debuglog der das bestaetigen wuerde. Warum dann dieses passiert kann ich nur aus dem Debuglog ersehen. Ansonsten ist alles :gk1: ;)

    Das ist merkwuerdig. Es wird bei Dir doch ein tar angelegt - oder?

    Direkt nach RBK0085I: Backup of type tar started. Please be patient. kommt die Debugzeile. Dort findest Du den exakten tar Befehl der genutzt wird um das tar zu erstellen. Ansonsten sollte die Zeile im Debuglog gefunden werden wenn nach --exclude= gesucht wird.


    Falls Du den ausgefuehrten tar Befehl nicht findest kann ich Dir ohne das vollstaendige Debuglog nicht mehr weiterhelfen :(