Mehrzeiliges SQL-Feld per Skript auftrennen...

  • hehe,
    klingt ziemlich logisch... :D
    Da wollen wir dann mal schauen, Problem ist z.Zt. noch die ARGV[0] in das Shell-Command reinzubringen. Ausserdem muss ich dann weiter sehen, wie ich meine Shellcommands ausführen kann...
    Das kann ich aber dann ja quasi auch im pl-Skript machen, hmm...
    Griebel, griebel, griebel....


    Vielen Dank nochmal bis hier hin, werd bestimmt noch die ein oder andere Frage auftun können.

    KellerServer | Fractal Cockpit Server + DigiBit Twin SAT>IP Server | Ubuntu22 VM mit vdr 2.6 |

  • Zitat

    Problem ist z.Zt. noch die ARGV[0] in das Shell-Command reinzubringen

    Code
    my $cmd = "befehl $ARGV[0]";
    my $text = qx ($cmd);

    Ich denke, das löst Dein Problem.


    Gruß


    Merten

    SilverStone SST-LC10B-E mit Kram drin damit läuft.
    yaVDR 0.4

  • Joa, die Richtung ist richtig... :)
    Leider meckert das skriptchen nun, da es im mysql-Befehl Hochkommas findet, die dann natürlich den Befehltext unterbrechen.

    Code
    my $cmd = "mysql -h localhost -D bildergalerien -u kniepbert -pvdr -e "SELECT text_comment FROM pic_comment WHERE pic_id='$ARGV[0]'" |grep -v text_comment";

    Kann ich die irgendwie qouten?
    Der Schnellschuss aus der Hüfte klappte nich: Qouten mit "\...

    KellerServer | Fractal Cockpit Server + DigiBit Twin SAT>IP Server | Ubuntu22 VM mit vdr 2.6 |

    Einmal editiert, zuletzt von kniepbert ()

  • So wie es aussieht habt ihr zwar schon ne Lösung, aber für zeilenweises Einlesen geht eine while-Schleife glaub ich am besten.
    Im folgenden Beispiel muss man die Ausgabe der SQL Abfrage zwar in ein File schreiben, dafür ist das Ganze aber auch kurz und schmerzlos.


    while read line; do
    echo $line
    done < $TEMPDIR/Ausgabe.txt

    Gehäuse: Intertech 4U 4416, Board: Supermicro X11SAE; Kathrein EXIP418; OS: Ubuntu 18.04; Plugins: xineliboutput, satip, burn, femon, live, streamdev-server, text2skin:anthra-1920

    2x RPI2/3; Plugins: rpihddevice; videodir via NFS


  • OK,


    klappt nun..... :)
    Wenn ich jetzt noch die Zeilen in eine txt-Datei geschrieben bekomme, kann ich die datei dann im shell-skript weiterverarbeiten.
    Dann hätte ich es geschafft.. *freu*


    Thx a lot

    KellerServer | Fractal Cockpit Server + DigiBit Twin SAT>IP Server | Ubuntu22 VM mit vdr 2.6 |

  • Moin Merten,


    alles im Griff! :D
    habe die Ausgabe in eine Datei umgeleitet, welche ich dann im Shellskriptchen verarbeite...
    Das scheint auch soweit zu klappen.


    Vielen Dank
    Christian

    KellerServer | Fractal Cockpit Server + DigiBit Twin SAT>IP Server | Ubuntu22 VM mit vdr 2.6 |


  • Eigentlich hättest du ja nur die man page von mysql dir genauer anschauen
    müssen.




    Da kannste nämlich mit der Option --batch sowie --silent euch eine einfache textausgabe erzwingen:


    Code
    vdr:~/XXV/xstyle# mysql -B -s -e "select * from USER" xxv
    12      xxv     e172832bb48bdbd4864bb90b4cc91d9a        admin   HTTPD::HtmlRoot=html                    0       0
    14      xpix    9a3f493ac674fae1a16777201060e99f        user    NULL                    0       0


    Und die Zeilen dann mit while durchballern, die Felder sind mit Tabs getrennt.


    just my 2cents
    xpix

  • Hehe, das wäre natürlich auch ne Möglichkeit gewesen, gut zu wissen. Nächstes Mal werde ich dran denken.
    Obwohl es so natürlich schon ein wenig zu einfach wäre... :)


    Greetz aus NZ

    KellerServer | Fractal Cockpit Server + DigiBit Twin SAT>IP Server | Ubuntu22 VM mit vdr 2.6 |

  • Gleich hab ich es..... :)
    Nur noch ein kleines Formatierungsproblem.
    Ich habe die Zeilen jetzt mit php von ihren Umbrüchen befreit und die so aufgetrennten Strings in eine neue Tabelle geschrieben, damit ich sie besser auslesen kann.
    Der Knackpunkt liegt jetzt zur Zeit beim Schreiben des Textes in ein Image.
    Der Text scheint irgendwie mit Hochkommas besudelt zu sein und bringt somit die Syntax des convert-Befehles durcheinander. Habe versucht mit sed die Übeltäter zu entfernen, leider klappt das dann im Befehl aber irgendwie nicht mehr... ;(

    Code
    cat zeile.txt | while read zeile; do
                           TEXT=`echo $zeile |sed -e "s/'//g"`
                           convert -font helvetica -fill white -pointsize 20 -draw 'text 15,15 "'$TEXT'"' text.jpg text_out.jpg
    Code
    ++ echo Diese Burschen wollen alle '5000$' gewinnen. Falls man nämlich ein '"Hole' in 'One"' auf dem Ponton schafft, gibbet 'Cash!'
    ++ sed -e 's/'\''//g'
    + TEXT=Diese Burschen wollen alle 5000$ gewinnen. Falls man nämlich ein "Hole in One" auf dem Ponton schafft, gibbet Cash!
    + convert -font helvetica -fill white -pointsize 20 -draw 'text 15,15 "Diese' Burschen wollen alle '5000$' gewinnen. Falls man nämlich ein '"Hole' in 'One"' auf dem Ponton schafft, gibbet 'Cash!"' text.jpg text_out.jpg

    Wie bring ich convert den Text bei?
    Da muss ich doch bestimmt wie wild quoten, oder?


    Auf dem besten Wege
    Christian

    KellerServer | Fractal Cockpit Server + DigiBit Twin SAT>IP Server | Ubuntu22 VM mit vdr 2.6 |

Jetzt mitmachen!

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