Ausgabe formatieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

Ausgabe formatieren

Beitrag von zahlhans » 08.07.2009 14:26:31

Ich hätte nun noch eine letzte Frage:

In einer Datei habe ich Daten in folgendem Format:

Code: Alles auswählen

a#A#1
b#B#2
c#C#3
b#A#4
c#A#5
...
der Form STRING#INTEGER#INTEGER. Ich möchte diese Ergebnisse nun tabellarisch ausgeben, also

Code: Alles auswählen

               A               B                  C             ...
a             1               ...
b             4               ...
c             5               ...
...
Der zweite Wert (die Spalten) kann mit einer Schleife durchlaufen werden und die Strings (Zeilen) sind mir auch alle bekannt (müssen also nicht erst aus der Datei bestimmt werden). Geht das evtl. mit awk? Ich habe mich bisher nur grundlegend daran versucht und es nicht hinbekommen... Mein eigentliches Problem ist dabei das Befüllen einer Zeile. Mit grep kann ich die einzelnen "Zellen" schon ermitteln, aber wie bekomme ich sie hintereinander geschrieben?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Ausgabe formatieren

Beitrag von Meillo » 08.07.2009 15:06:25

Code: Alles auswählen

#!/usr/bin/awk -f

BEGIN {
        FS="#"
}

{
        rows[$1] = 1
        cols[$2] = 1
        data[$1,$2] = $3 

}

END {
        for (c in cols) {
                printf("\t%s", c) 
        }  
        printf("\n")
        for (r in rows) {
                printf("%s", r) 
                for (c in cols) {
                        if (data[r,c]) {
                                printf("\t%d", data[r,c])
                        } else {
                                printf("\t-")
                        }  
                }  
                printf("\n")
        }  
}
Sollte das liefern was du willst:

Code: Alles auswählen

$ cat data.txt 
a#A#1
b#B#2
c#C#3
b#A#4
c#A#5
  
$ ./totable.awk <data.txt 
	A	B	C
a	1	-	-
b	4	2	-
c	5	-	3
Use ed once in a while!

zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

Re: Ausgabe formatieren

Beitrag von zahlhans » 08.07.2009 17:14:03

Vielen Dank! Das ist noch viel besser als erhofft. Es scheint sich zu lohnen, sich einmal näher mit awk zu beschäftigen.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Ausgabe formatieren

Beitrag von Meillo » 08.07.2009 18:41:27

zahlhans hat geschrieben:Es scheint sich zu lohnen, sich einmal näher mit awk zu beschäftigen.
Definitiv! :-D
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Ausgabe formatieren

Beitrag von Duff » 08.07.2009 19:18:16

Meillo hat geschrieben:
zahlhans hat geschrieben:Es scheint sich zu lohnen, sich einmal näher mit awk zu beschäftigen.
Definitiv! :-D
Wobei dies so auch schon wieder etwas komplizierter ist.
Oh, yeah!

Antworten