Linux “awk” & more

“awk” ist ein sehr angenehmes Linux-tool zum Analysieren von Texten und Werten.

Ein kleiner Vorgeschmack:

awk -F "," '{print $6 " " $4 " " $2}' export_airports.csv | sort | awk '{sum+=$1;print $0} END {print "SUM: "sum}'

Dies liefert eine sortierte Liste mit den Werten aus dem GeoDatenFile von meinem Kollegen. Dort habe ich mir die Werte aus dem “.dbf” File in eine “.CSV” File gespeichert, um mit “awk” angenehm diese zu analysieren.

Grundaufbau:

awk '{print $0}' $File

AWK splittet in diesem Fall die Werte in dem File anhand der Leerzeichen. “$0” bedeutet, dass alle Werte normal ausgegeben werden.

Teilausgabe:

awk '{print $1 $3}' $File

AWK gibt in diesem Fall alle Werte, aus der theoretischen Tabelle, in Spalte 1 und 3 aus. Alle anderen Spalten werden nicht ausgegben.

Anderer Teiler:

awk -F "," '{print $0}' $File

Hierbei wird die Teilung in die theoretische Tabelle anhand des ” , ” durchgeführt.

Emailliste aus dem Benutzername erstellen:

awk -v mailend="@tempcompany.eu" 
'{print $1 mailend}' $Userlist

Hier wird außerhalb des AWK-Print eine Varibale mit einer Zuweisung definiert welche in dem AWK-Print verwendet werden kann.  Ausgabe: “david@tempcompany.eu”

Erstellen von neuen zusätzlichen Werten:

awk -F "," '{sum+=$1; print $0 " currentsum: " sum}' $File

Jetzt wird bei jeder Zeile, die ausgeben wird, der Wert aus der Spalte $1 dem Wert in der Variable “sum” hinzu addiert und dabei immer der aktuelle berechnete Wert am Ende jeder Zeile ausgegben.

Abschluss:

Damit sind die meisten Grundlagen abgedeckt die ich bis jetzt so benötigt habe bei meinen aktivitäten mit “awk”

awk '{sum+=$1;print $0} END {print "SUM: "sum}'

Das “END” bewirkt, dass dieser “Print”-Bereich erst zum Schluss ausgegeben wird, wenn keine Zeile mehr zum Ausgeben zur Verfügung steht.

sort

Sort kann zwischen “|” genutzt werden um anhand eines bestimmten Wertes die Ausgabe zu sortieren.

Damit ist  der Command verständlich 🙂

awk -F "," '{print $6 " " $4 " " $2}' export_airports.csv | sort | awk '{sum+=$1;print $0} END {print "SUM: "sum}'

Bei Fragen und Anregungen – bitte auf unsere Facebook-Seite eine Kommentar zu diesem Artikel hinterlassen.