*.txt zeilen+spaltenweise auslesen

J

Jan S.

Grünschnabel
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 ;-)
 
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.)
 
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!
 

Ähnliche Themen

ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

Zeile für Zeile auslesen und Befehl ausführen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

dateien nach inhalt scannen und dann betreffende Zeile löschen

awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

Zurück
Oben