• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Logfiles auswerten üben

Hallo Leute

Ich muss ja auch mal paar neue Sachen dazulernen, so dachte ich mir heute mal das ich mir zu Übungszwecken das Wetterlogfile von kweather vornehme.

Leider habe ich im Moment keinen Plan wie man eine saubere Ausgabe hinbekommt, So das alles sauber untereinander steht.

Für Tipps wäre ich sehr dankbar , da mir die Ausgabe so noch nicht ganz gefällt, weil manche Zeilen um einen Tabulator nach links verschoben sind. :

In dem Beispiel wollte ich eine saubere Statistik erstellen an welchen Tagen wir klaren Himmel hatten:
Code:
trommel@linux-jiac:~> uniq Wetterprotokoll.txt | grep 'Klarer Himmel' | awk '{print $1 "\t" $2 "\t" $3 "\t" $4}' | uniq
Mittwoch,       23.     Januar  2008
Donnerstag,     24.     Januar  2008
Freitag,        25.     Januar  2008
Samstag,        26.     Januar  2008
Sonntag,        27.     Januar  2008
Montag, 28.     Januar  2008
Dienstag,       29.     Januar  2008
Donnerstag,     31.     Januar  2008
Freitag,        1.      Februar 2008
Samstag,        2.      Februar 2008
Sonntag,        3.      Februar 2008
Montag, 4.      Februar 2008
Dienstag,       5.      Februar 2008
Mittwoch,       6.      Februar 2008
Donnerstag,     7.      Februar 2008
Freitag,        8.      Februar 2008
Samstag,        9.      Februar 2008
Sonntag,        10.     Februar 2008
Montag, 11.     Februar 2008
Dienstag,       12.     Februar 2008
Mittwoch,       13.     Februar 2008
Freitag,        15.     Februar 2008
Samstag,        16.     Februar 2008
Sonntag,        17.     Februar 2008
Montag, 18.     Februar 2008
Dienstag,       19.     Februar 2008
Donnerstag,     21.     Februar 2008
Freitag,        22.     Februar 2008
Sonntag,        24.     Februar 2008
Montag, 25.     Februar 2008
Dienstag,       26.     Februar 2008
Mittwoch,       27.     Februar 2008
Donnerstag,     28.     Februar 2008
Freitag,        29.     Februar 2008
Samstag,        1.      März    2008
Dienstag,       4.      März    2008
Mittwoch,       5.      März    2008
Donnerstag,     6.      März    2008
Freitag,        7.      März    2008
Samstag,        8.      März    2008
Sonntag,        9.      März    2008
Montag, 10.     März    2008
Dienstag,       11.     März    2008
Mittwoch,       12.     März    2008
Freitag,        14.     März    2008
Samstag,        15.     März    2008
Sonntag,        16.     März    2008
trommel@linux-jiac:~>

Gruß Peter
 
Hiho,

schau dir mal printf als bash-builtin an, wie auch printf als Funktion in awk. Vielleicht auch wie das alles mit einem Awk-Aufruf zu bewerkstelligen ist.

Mit freundlichem Gruß.
 
Hallo qor

Auf deine Hinweise hin habe ich mein Köpfchen nochmal bisschen angestrengt und bin auf folgende Möglichkeit gekommen.
Ich nehme aber mal an das dies nicht ganz das ist was du gemeint hast:
(Hinweis: ich habe ausserdem zusätzlich durchnummeriert, so das man gleich die Anzahl Tage seit Januar hat)

Code:
trommel@linux-jiac:~> uniq Wetterprotokoll.txt | grep 'Klarer Himmel' | awk '{print $1, "   " "\t" "\t" $2 "\t" $3 "\t" $4}' | uniq | nl
     1  Mittwoch,               23.     Januar  2008
     2  Donnerstag,             24.     Januar  2008
     3  Freitag,                25.     Januar  2008
     4  Samstag,                26.     Januar  2008
     5  Sonntag,                27.     Januar  2008
     6  Montag,                 28.     Januar  2008
     7  Dienstag,               29.     Januar  2008
     8  Donnerstag,             31.     Januar  2008
     9  Freitag,                1.      Februar 2008
    10  Samstag,                2.      Februar 2008
    11  Sonntag,                3.      Februar 2008
    12  Montag,                 4.      Februar 2008
    13  Dienstag,               5.      Februar 2008
    14  Mittwoch,               6.      Februar 2008
    15  Donnerstag,             7.      Februar 2008
    16  Freitag,                8.      Februar 2008
    17  Samstag,                9.      Februar 2008
    18  Sonntag,                10.     Februar 2008
    19  Montag,                 11.     Februar 2008
    20  Dienstag,               12.     Februar 2008
    21  Mittwoch,               13.     Februar 2008
    22  Freitag,                15.     Februar 2008
    23  Samstag,                16.     Februar 2008
    24  Sonntag,                17.     Februar 2008
    25  Montag,                 18.     Februar 2008
    26  Dienstag,               19.     Februar 2008
    27  Donnerstag,             21.     Februar 2008
    28  Freitag,                22.     Februar 2008
    29  Sonntag,                24.     Februar 2008
    30  Montag,                 25.     Februar 2008
    31  Dienstag,               26.     Februar 2008
    32  Mittwoch,               27.     Februar 2008
    33  Donnerstag,             28.     Februar 2008
    34  Freitag,                29.     Februar 2008
    35  Samstag,                1.      März    2008
    36  Dienstag,               4.      März    2008
    37  Mittwoch,               5.      März    2008
    38  Donnerstag,             6.      März    2008
    39  Freitag,                7.      März    2008
    40  Samstag,                8.      März    2008
    41  Sonntag,                9.      März    2008
    42  Montag,                 10.     März    2008
    43  Dienstag,               11.     März    2008
    44  Mittwoch,               12.     März    2008
    45  Freitag,                14.     März    2008
    46  Samstag,                15.     März    2008
    47  Sonntag,                16.     März    2008
trommel@linux-jiac:~>
 
Hiho,

hier einmal ein Beispiel:

Code:
qor@wave:~> cat foo
aa a
bbb bbbb Klarer Himmel
bbb bbbb Klarer Himmel
c ccccc
dddddd Klarer Himmel
eee e Klarer Himmel
qor@wave:~> awk '/Klarer Himmel/ { printf("%-10s\t\t%10s\n", $1, $2) }' <(uniq foo)
bbb                           bbbb
dddddd                      Klarer
eee                              e
qor@wave:~>

Vielleicht hilft dir das auf die Sprünge.

Mit freundlichem Gruß.
 
Vielleicht hilft dir das auf die Sprünge.

Jetzt habe ich mich mal bisschen rumprobiert und bin erst wieder drauf gekommen, das awk an sich eigentlich schon eine eigene Programmiersprache ist, die schon fast alle benötigten Funktionen mitbringt. Muss mich besonders mit printf nochmal näher befassen.
Wie das reagiert habe ich noch nicht ganz begriffen.

Aber Ergebnis ist schon recht brauchbar:

Code:
trommel@linux-jiac:~> awk '/Klarer Himmel/ { printf("%-10s\t%7s\t%5s\t%5s\n", $1, $2, $3, $4) }' <(uniq Wetterprotokoll.txt) | uniq | nl
     1  Mittwoch,           23. Januar   2008
     2  Donnerstag,         24. Januar   2008
     3  Freitag,            25. Januar   2008
     4  Samstag,            26. Januar   2008
     5  Sonntag,            27. Januar   2008
     6  Montag,             28. Januar   2008
     7  Dienstag,           29. Januar   2008
     8  Donnerstag,         31. Januar   2008
     9  Freitag,             1. Februar  2008
    10  Samstag,             2. Februar  2008
    11  Sonntag,             3. Februar  2008
    12  Montag,              4. Februar  2008
    13  Dienstag,            5. Februar  2008
    14  Mittwoch,            6. Februar  2008
    15  Donnerstag,          7. Februar  2008
    16  Freitag,             8. Februar  2008
    17  Samstag,             9. Februar  2008
    18  Sonntag,            10. Februar  2008
    19  Montag,             11. Februar  2008
    20  Dienstag,           12. Februar  2008
    21  Mittwoch,           13. Februar  2008
    22  Freitag,            15. Februar  2008
    23  Samstag,            16. Februar  2008
    24  Sonntag,            17. Februar  2008
    25  Montag,             18. Februar  2008
    26  Dienstag,           19. Februar  2008
    27  Donnerstag,         21. Februar  2008
    28  Freitag,            22. Februar  2008
    29  Sonntag,            24. Februar  2008
    30  Montag,             25. Februar  2008
    31  Dienstag,           26. Februar  2008
    32  Mittwoch,           27. Februar  2008
    33  Donnerstag,         28. Februar  2008
    34  Freitag,            29. Februar  2008
    35  Samstag,             1. März     2008
    36  Dienstag,            4. März     2008
    37  Mittwoch,            5. März     2008
    38  Donnerstag,          6. März     2008
    39  Freitag,             7. März     2008
    40  Samstag,             8. März     2008
    41  Sonntag,             9. März     2008
    42  Montag,             10. März     2008
    43  Dienstag,           11. März     2008
    44  Mittwoch,           12. März     2008
    45  Freitag,            14. März     2008
    46  Samstag,            15. März     2008
    47  Sonntag,            16. März     2008
    48  Montag,             17. März     2008
trommel@linux-jiac:~>

Gruß Peter
 
Oben