Hier im Forum tauchen häufiger kleine Programmierfragen mit Daten in csv-Textdateien auf. Da ich primär Python und Perl einsetze, habe ich meist Lösungsskripte in diesen Sprachen vorgeschlagen.
Meist machen andere dann weitere Vorschläge, vielleicht was mit grep und sed, oder eben auch mit awk (siehe auch hier).
awk scheint für diese Art Aufgabe besonders geeignet zu sein. Dazu ist der Interpreter relativ klein.
Also hab' ich mir mal awk ein bißchen angesehen. Mir fällt auf:
1. awk erwartet stets eine csv-Textdatei zur Verarbeitung. Auf die einzelnen Zeilen in dieser Datei bezieht sich dann der awk-Code.
Dieser kann dadurch relativ kurz sein, eben weil er sich auf dieses Szenario bezieht. Das ist ähnlich wie das, was bei Perl-Einzeilern durch die Optionen "perl -pe ..." und "perl -pi" erreicht wird.
Ich mag das nicht so gern (bei awk nicht, aber auch nicht bei Perl): Es wird eine Situation impliziert, die nicht aus dem Code selbst ersichtlich ist. Das widerspricht dem Zen of Python ("import this" an der Python-Eingabeaufforderung):
Ich ziehe Code vor, der bei Null beginnt und sich dann aus sich selbst heraus schlüssig entwickelt. Auch wenn er dadurch ein bißchen länger wird.
2. Wenn die zu verarbeitende Datei z.B. so aussieht (Beispiel von hier):
kann man recht leicht die Summe der Werte berechnen:
Das erinnert an eine Tabellenkalkulation. Offenbar ist awk so eine Art Tabellenkalkulation für die Konsole. 
Meist machen andere dann weitere Vorschläge, vielleicht was mit grep und sed, oder eben auch mit awk (siehe auch hier).
awk scheint für diese Art Aufgabe besonders geeignet zu sein. Dazu ist der Interpreter relativ klein.
Also hab' ich mir mal awk ein bißchen angesehen. Mir fällt auf:
1. awk erwartet stets eine csv-Textdatei zur Verarbeitung. Auf die einzelnen Zeilen in dieser Datei bezieht sich dann der awk-Code.
Dieser kann dadurch relativ kurz sein, eben weil er sich auf dieses Szenario bezieht. Das ist ähnlich wie das, was bei Perl-Einzeilern durch die Optionen "perl -pe ..." und "perl -pi" erreicht wird.
Ich mag das nicht so gern (bei awk nicht, aber auch nicht bei Perl): Es wird eine Situation impliziert, die nicht aus dem Code selbst ersichtlich ist. Das widerspricht dem Zen of Python ("import this" an der Python-Eingabeaufforderung):
Gut, awk ist viel älter als Python. Trotzdem ist das nicht nur zunächst schwer zu lernen, sondern auch später (jedenfalls für mich) relativ schwer, immer in diesem Szenario zu denken.Explicit is better than implicit.
Ich ziehe Code vor, der bei Null beginnt und sich dann aus sich selbst heraus schlüssig entwickelt. Auch wenn er dadurch ein bißchen länger wird.
2. Wenn die zu verarbeitende Datei z.B. so aussieht (Beispiel von hier):
Code:
Susanne 15.0
Thomas 23.0
Richard 0.0
Birgit -2.0
Helmut 31.0
Code:
#!/usr/bin/awk -f
{ sum += $2 }
END { print sum }