[SOLVED]BASH: Liste bearbeiten, jeder Zeile eine "Kapitelmarke"voranstellen

  • Hallöchen


    Ich bastel hier an einem Script... und komme seit heut Mittag nicht mehr weiter... Ich kann nichtmal mein Problem richtig erklären :( Vielleicht könnt ihr mir helfen.


    Mein Problem:


    Ich starte ein "cat testdatei"...der Output ist Folgendermaßen(Beispielhaft):


    24
    a
    b
    c
    25
    a
    b
    26
    .
    .



    Die Liste soll so umgebaut werden, daß sie so aussieht...
    das quasi jeder buchstabe weiß, zu welcher Gruppe er gehört ... ;D


    24
    24a
    24b
    24c
    25a
    25b
    .
    .
    .


    Ein Tip wär echt cool...


    Thanxx


    MfG


    Crue

  • Du nimmst Dir eine Variable namens $KAPITEL. Lies jede Zeile Deiner Datei ein. Wenn $ZEILE eine Zahl ist, setze $KAPITEL = $ZEILE. Ansonsten schreibe $KAPITEL + $ZEILE in die Ausgabe.


    Wie wärs damit? ;)

    Hardware: AMD Duron 900 MHz, 256 MB Ram, 1 x 400 GB und 2 x 200 GB Maxtor, 1 x 500 GB USB 2.0, Nec DVD-RW ND-3500AG, 1 x TT 1.6 FF DVB-S, 1 x Twinhan Budget DVB-T
    Software: VDR 1.4.1, BigPatch, DMH-DVD-Archive-Patch, Kernel 2.6.12
    ---
    "Hörma, wie heißt nomma dat Instrument mit den 3 Knöppen oben drauf...? - Ja richtig, Flöte!"

  • Hmm... vielleicht die Richtung?


    Code
    outln=""
    cat datei | while read inln; do 
      echo $inln | grep -q "[0-9]"
      if [ $? -eq 0 ]; then 
        echo $outln
        outln="$inln"
      else 
        outln="$outln$inln" 
      fi 
    done


    dmh:
    Dann kannst mir als Scriptexperte gleich mal sagen wie ich bei o.a. Script erreiche dass outln ausserhalb der while Schleife auch noch bekannt ist ;)

  • EDIT: Hmm, zu langsam, aber die Lösungen sehen sowieso ziemlich gleich aus... :)

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

    Edited once, last by vejoun ().

  • Einen hätte ich auch noch :)


    Code
    NUM=""
    while read line ; do
      if [ -z "${line//[0-9]/}" ] ; then
        NUM=${line}
      else
        echo -n "${NUM}"
      fi
      echo "${line}"
    done < datei


    Ohne grep 8) und durch "while ... done < datei" statt "cat datei | while ..." kann man innerhalb der Schleife auch Variablen setzen, die außerhalb der Schleife weiter existieren.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!