Mehrzeiliges SQL-Feld per Skript auftrennen...

  • Moinsen VDRler,


    ich möchte gerne eine MySQL-Ausgabe auf Shell-Ebene ein wenig aufsplitten.
    Wenn ich das Feld auslese kommt ungefähr das:

    Code
    +----------------------------------------------------------------------------------------------------+
    | text                                                                                               |
    +----------------------------------------------------------------------------------------------------+
    | Osterfeuerschützenhilfe...
    In Deutschland ist es gerade 20:00, also Zeit das Feuer anzustecken... |
    +----------------------------------------------------------------------------------------------------+


    Jetzt ist hinter dem "[..]hilfe..." ein Zeilenumbruch und ich kann selbige irgendwie nich umschiffen...
    Wenn ich z.B. versuche mittels "grep -v text" den oberen Teil abzuschneiden, bekomme ich nur alles nach dem letzten Zeilenumbruch ausgegeben, in diesem Fall also:

    Code
    [...] |grep -v text
    \nIn Deutschland ist es gerade 20:00, also Zeit das Feuer anzustecken...


    Ich brauche also eine Schleife, die mir den Text Zeilenweise auftrennt.


    Das i-Tüpfelchen wäre dann noch ein Befehl, der mir einen z.B. 50 Zeichen langen Text an der X-ten stelle trennt; aber eins nach dem anderen...


    Hintergrund ist, dass ich Fotokommentare in eine Grafik unter die jeweiligen Fotos schreiben möchte, um daraus dann eine Diashow zu machen.
    Geht wahrscheinlich mit anderen Mitteln einfacher, aber da bleibt ja das Tüfteln aus... :)
    Ausserdem bin ich gerade in Neuseeland und habe somit nicht gerade uneingeschränkten Internetzugriff...


    Vielen Dank schonmal im Vorraus
    Kniepbert

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

  • Moin moin,


    Meinst Du so?


    Gruß


    Merten

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

  • Moinsen,


    jeep, so iss das gedacht.
    Erst Zeilenweise splitten und dann die Kurzzeilen der Länge nach trennen...
    Quasi noch eine for-Schleife in der for-Schleife.


    Greetz

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

  • HELP, I NEED SOMEBODY!
    HELP, COM'ON ANYBODY!!!!
    HELP, I NEED SOMEONE, HEEELLLLP!!!!!


    oder so aehnlich, copyright BEATLES....

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

  • Tschuldige, da hab' ich Dich missverstanden. Ich dachte Dein letzter Post war nur 'ne Bestätigung.

    Zitat

    Erst Zeilenweise splitten und dann die Kurzzeilen der Länge nach trennen...


    Dem kann ich nicht folgen. Kannst Du mal schreiben, wie das Ergebnis aussehen soll?


    Gruß


    Merten

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

  • Moinsen,


    ich versuchs mal mit ein wenig Pseudocode:

    Code
    für (jede Zeile im Text) mach:
           zerlege die Zeile in (z.B.) "10 Zeichen"-Happen
           fertig;


    Wenn ich also einen Text habe:
    Erste Zeile /n
    zweite Zeile /n
    sdasd asd as asd aa sdas asd aasd as aa sdas
    soll das rauskommen:
    1. Erste Zeile
    2. zweite Zeile
    3.1 sdasd asd as asd
    3.2 aa sdas asd aasd
    3.3 as aa sdas


    Ich hab mir schon überlegt einen Umweg zu gehen, falls das rausfiltern der Umbrüche zu schwierig ist. Dann werd ich in der Datenbank die Umbrüche ">><<" ändern, die findet man dann bestimmt. Schöner wäre jedoch eine saubere Lösung.


    Thx & Greetz aus Neuseeland

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

  • Moin moin,


    sowas hab' ich mal in perl gemacht. Ich such das heut abend mal raus, jetzt muss ich aber erstmal zur Arbeit.


    Gruß


    Merten

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

  • Dafür gibt's unter unix fmt, der teilt einen Text nach Wunsch auf: fmt -50 beispielsweise in 50-Zeichen Häppchen, beim Leerzeichen aufgetrennt.


    Gruß,
    Armin

    VDR
    ASUS A7N8X-X, AMD 2600+, 2 GB, 320 GB HD, Hauppauge DVB-S 1.3, Hauppauge Nova-S-Plus, Funktastatur
    Debian 4.0/Etch-Kernel 2.6.18-5-486
    c't-VDR 6.1 mit e-tobi 1.6.0 (neu gepatched ohne sortrecordings), acpi, vdradmin-am, burn, osdteletext, ffnetdev, audiorecorder, infosatepg, ...
    Client
    dbox2 (Sagem 2xI_C) mit Neutrino-Derivat

  • Moinsen,


    OK, mit fmt habe ich somit die innere Schleife abgehakt...
    Jetzt fehlt nur noch das trennen nach Umbrüchen.


    Ich weiss jetzt aber nicht, ob man das mit einem echo-Befehl simmulieren kann. Mein "Text" kommt aus einer MySQL-Abfrage, die Umbrüche beinhaltet.


    merten
    Jeep, das wäre cool...
    Bin zwar nur ein Anfänger-Perlentaucher, aber das macht ja nichts... ;)


    Thx & Greetz

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

    Einmal editiert, zuletzt von kniepbert ()

  • Sorry, mir ist immer noch nicht klar, was Du willst:

    • Brauchst Du eine Nummerierung der Zeilen?
    • Willst Du die Umbrüche aus der Datenbank beibehalten oder können die entfallen?
    • Warum willst Du eine zeilenweise Ausgabe bzw. womit willst du das weiterverarbeiten?

    Mehr Input! ;) Ich vermute, wenn ich das Gesamtproblem kenne, dann wird das kleine ganz einfach.


    Gruß,
    Armin

    VDR
    ASUS A7N8X-X, AMD 2600+, 2 GB, 320 GB HD, Hauppauge DVB-S 1.3, Hauppauge Nova-S-Plus, Funktastatur
    Debian 4.0/Etch-Kernel 2.6.18-5-486
    c't-VDR 6.1 mit e-tobi 1.6.0 (neu gepatched ohne sortrecordings), acpi, vdradmin-am, burn, osdteletext, ffnetdev, audiorecorder, infosatepg, ...
    Client
    dbox2 (Sagem 2xI_C) mit Neutrino-Derivat

  • Moinsen Armin,


    wie oben beschrieben (hehe) möchte ich den Text unter ein Bild bringen, da der Text Bildkommentare darstellt.
    Die Kommentare müssen nun erstmal Zeilenweise aufgetrennt werden und anschliessend, da die Bildbreite die Zeilenbreite festlegt, nach x-Zeichen getrennt werden...


    Die Umbrüche in der Datenbank dienen somit eigentlihc nur als Marker für die Zeilenumbrüche auf der Shell. Auf meiner Webseite ersetzt ein php-Skript die Umbrüche durch <br>, um die Brüche darzustellen...


    Klick sonst kurz mal auf den VDR-Link und schau dir mein Bildarchiv an, da siehst du dann die Bildkommentare, um die es geht...

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

  • Tach eisenbert,


    1. Frage: Warum willst Du das auf der Shell und nicht in php machen? Oder gleich den Browser?
    2. Frage: Sollen die Umbrüche, die schon in der Datenbank sind, erhalten bleiben?
    Also: soll aus

    Code
    Osterfeuerschützenhilfe...
    In Deutschland ist es gerade 20:00, also Zeit das Feuer anzustecken...

    bei Umbruch nach 50 Zeichen werden:

    Code
    Osterfeuerschützenhilfe... In Deutschland ist es
    gerade 20:00, also Zeit das Feuer anzustecken...

    oder

    Code
    Osterfeuerschützenhilfe...
    In Deutschland ist es gerade 20:00, also Zeit
    das Feuer anzustecken...


    3. Frage: Reicht eine Ausgabe auf stdout?


    Gruß,
    Armin


    P.S.: Ich sehe keine Bildkommentare in Deinem Archiv...

    VDR
    ASUS A7N8X-X, AMD 2600+, 2 GB, 320 GB HD, Hauppauge DVB-S 1.3, Hauppauge Nova-S-Plus, Funktastatur
    Debian 4.0/Etch-Kernel 2.6.18-5-486
    c't-VDR 6.1 mit e-tobi 1.6.0 (neu gepatched ohne sortrecordings), acpi, vdradmin-am, burn, osdteletext, ffnetdev, audiorecorder, infosatepg, ...
    Client
    dbox2 (Sagem 2xI_C) mit Neutrino-Derivat

    Einmal editiert, zuletzt von ark ()

  • Es geht auch nicht um eine Website... :) (Im Skriptum: wenn du ein Bild mit grau hinterlegter Tabelle vergrösserst, erscheinen die Kommentare)
    Ich baue aus dem Bild und dem dazugehörigem Kommentar ein neues Bild, auf dem oben das Bild und unten (auf schwarzem Grund) der Kommentar steht.
    Diese Bilder möchte ich später dann zu einem Movie zusammentragen und es bei einer Fete im Hintergrund laufen lassen.
    Um genau zu sein, bei meiner "Deutschland-Wiedereintritts"-fete, da ich momentan für drei Monate in Neuseeland bin.


    Die Befehle zum erstellen, schreiben in ein Bild und Zusammenfügen der Bilder habe ich schon, es geht jetzt halt nur noch um das Aufarbeiten der Kommentare...


    Beispiellink zu einem Kommentar

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

  • So, hab's gefunden und angepasst. Nicht schön, aber geht.


    Gruß


    Merten

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

  • Ja cool,


    das werd ich heute abend (NZ / MEZ: morgen früh) mal austesten... :)
    Zwei Fragen hab ich dann noch:
    1. Wie bau ich das am besten in ein Shell-Skriptchen ein?
    1.1 Den Text per parameter übergeben...?
    1.2 Besser wohl, die DB-ID übergeben und in pearl eine Datenbankabfrage machen (Befehl?).
    2. Und dann die Rückgabe der Zeilen ans Shell-Skript?


    Vielen Dank!!!


    PS: Ich glaub ich muss doch noch mal einen Perlentaucherkurs absolvieren... :D

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

  • Moin moin,


    1.

    Code
    NEUERTEXT=`perlscript.pl "$TEXT"`


    1.1 In Zeile 5 des Skriptes ändern:

    Code
    my $text = $ARGV[0];


    1.2 Keine Ahnung.
    2. Siehe 1.


    Gruß


    Merten

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

  • Moinsen Neves,


    ich denke, dass das mit dem Text nicht so gut hinhaut, da ich nur diese MySQL-Ausgabe habe.
    Besser wäre eine Abfrage im Skript selbst.
    Wer kann da die Perlen aus dem Feuer holen, nicht dass es hier alles nur "Pearlen vor die Säue schmeissen" ist.. :hat1
    Mehr Kalauer fallen mir gerade nicht ein.. :D


    Greetz

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

  • Moin moin,


    wie kommst Du denn zu dieser MySQL-Ausgabe? Ich nehme mal an, dass Du sie mit einem Shell-Befehl erhälst.


    Gruß


    Merten

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

  • Ok, dann in dem Skript die Zeilen 5-10 entfernen und Zeile 12 benutzen. Natürlich den Kommentar entfernen und "shell comand" durch, wer hätte das gedacht;), den Shell-Befehl ersetzen.


    Gruß


    Merten

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

Jetzt mitmachen!

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