*.txt zeilen+spaltenweise auslesen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Jan S., 11.02.2009.

  1. Jan S.

    Jan S. Grünschnabel

    Dabei seit:
    11.02.2009
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo alle Zusammen!

    Ich hab eine Text-Datei vorliegen mit folgendem Inhalt:

    Zahl1,1; Zahl1,2; Zahl1,3; Zahl1,4
    Zahl2,1; Zahl2,2; Zahl2,3; Zahl2,4
    Zahl3,1; Zahl3,2; Zahl3,3; Zahl3,4

    Die Anzahl der Zeilen sowie der Spalten kann variieren.
    Jetzt möchte ich die Datei per Script so aufsplitten, dass jeweils eine Spalte in einer neuen Datei steht.

    Ich weiß leider nicht wirklich wie ich das anstellen soll. Kann mir hier jemand helfen?

    Vielen Vielen Dank..bin kurz davor die Kiste ausm Fenster zu wuchten ;-)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 11.02.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ein paar nicht ganz unwichtige Fragen: was definiert eine Spalte?
    Ich würde auf ";" oder auf "; " (Semicolon + Leerzeichen) als Spaltenseparator tippen.

    Shell wäre auch nicht verkehrt zu wissen. NICHTSDESTOWENIGER, hier mal für gnu bash und gawk: (sollte aber auch mit jeder sh-Kompatiblen shell und mit "normalem" awk laufen.)
    Code:
    $ cat infile 
    Zahl1,1; Zahl1,2; Zahl1,3; Zahl1,4
    Zahl2,1; Zahl2,2; Zahl2,3; Zahl2,4
    Zahl3,1; Zahl3,2; Zahl3,3; Zahl3,4
    $ MAX=4     # maximale Spaltenanzahl
    $ for i in `seq $MAX`; do
        echo "i is currently: $i"
        awk -F'; ' "{print \$$i}" infile
    done
    
    i is currently: 1
    Zahl1,1
    Zahl2,1
    Zahl3,1
    i is currently: 2
    Zahl1,2
    Zahl2,2
    Zahl3,2
    i is currently: 3
    Zahl1,3
    Zahl2,3
    Zahl3,3
    i is currently: 4
    Zahl1,4
    Zahl2,4
    Zahl3,4
    Wie du siehst wird für jedes $i eine andere Spalte angegeben. Du könntest dann einfach einen Dateinamen mit $i drin nehmen und den Output jeweils darein leiten. HM. Also quasi
    Code:
    filename="spaltendatei_$i"
    in der Schleife und dann die Ausgabe jeweils in diese Datei schreiben (Mit ">>" für append.)
     
  4. Jan S.

    Jan S. Grünschnabel

    Dabei seit:
    11.02.2009
    Beiträge:
    9
    Zustimmungen:
    0
    Vielen Dank!

    Nachdem ich noch Anfänger bin (vieeel Potenzial ;-) ) kenne ich leider nicht alle Befehls-Möglichkeiten. Funktioniert tadellos!

    Trennzeichen ist lediglich ";", und es ist die bash :)

    Nochmals vielen Dank!
     
Thema:

*.txt zeilen+spaltenweise auslesen