[awk] Zeilen und Spalten tauschen

Hallo,

ich will in einem kleinen awk-Skript Zeilen und Spalten umtauschen, aber ich kriege das einfach nicht richtig hin.

Die Idee ist, daß ich vom STDIN etwas derartiges bekomme:

A;B;C
1;2;3
a;b;c

und das hier brauche:

A;1;a
B;2;b
C;3;c

Problem an der Sache - ich will es allgemein haben, also ohne Wissen, wieviele Zeilen Input und wieviele Einträge pro Zeile.

Danke im Voraus,
Michael

(und PS: nein, das ist keine Hausaufgabe :wink: )

Hallo,

ich will in einem kleinen awk-Skript Zeilen und Spalten
umtauschen, aber ich kriege das einfach nicht richtig hin.

Das Problem ist, dass awk Zeilenweise liest.
Ich würde das ganze daher mit Perl machen: Ein Array in dem die Zeilen der Ausgabematrix gespeichert sind, jede Zeile durch split jagen und dann die Ergebnisse in die Ausgabematrix schreiben.

Grüße,
Moritz

BEGIN{
#feldtrenner is ;
FS=";"
}
{
if(NF>transrows){
#bisher höchste Anzhal von Spalten
transrows=NF
}
for(i=1;i) {
chomp; # strip record separator
@Fld = split(/[;\n]/, $_, 9999);

if ($#Fld > $transrows) {
#bisher hvchste Anzhal von Spalten
$transrows = $#Fld;
}
for ($i = 1; $i [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
danke schön, ich kam bisher nicht dazu, das zu sagen.
Eventuell muß ich doch perl nehmen, weil mein awk hier mit Zeilenlängen >400 Zeichen anfängt rumzumeckern.

Das wird besonders dadurch dumm, daß ich genau solche Dinger habe :frowning:

Danke nochmal,
Michael

awk hat von Hause aus Limitationen,
100 Felder pro Zeile geht wohl nicht so ohne weiteres.
Das Rezept dagegen ist gawk (gnuawk).
Wenn Du awk besser kannst und
perl laufen lassen willst, dann gibts einen awk nach
perl converter namens a2p.
Du programmierts in awk, und lässt dan a2p über das
awk Programm laufen, dann hast du ein perl programm.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ach so ja, ich hab mit perl angefangen,
aber irgendwannmal hab ich das bei seite gelegt,
awk ist einfach einfacher und frei von technischem oder
ideologischem OO Balast, der nur vom Problem ablenkt.
Awk ist so ein Tool, wo man sagen könnte, einfacher getan
als gesagt, anstatt einfacher gesagt als getan.
Erstaunlich fand ich diesen Usenet-Eintrag.
Da hat einer bei JP Morgan angefangen, was
Milliarden um den Erdball pumpt, mit einem 15000 Zeilen awk script,
was er von seinem Vorgänger geerbt hat,
und er will es in die Newsgroup stellen.

http://groups.google.de/group/comp.lang.awk/browse_t…