28.11
2006

AWK Nummerierung einer Datei

Das folgende Awk-Skript nummeriert die Zeilen einer Datei und schreibt die entprechende Zahl gefolgt von einem Doppelpunkt an den Anfang jeder Zeile: (Speichern Sie bitte den Text der Linux Definition in eine Datei linux_definition.txt, wenn Sie die gleichen Ergebnisse erhalten wollen.)

awk ‘{ i += 1; print i”: “$0 }’ linux_definition.txt

Als Ergebnis erhält man dann die folgende zeilenweise nummerierte Ausgabe:
1: Definition von Linux2:3: nach Wikipedia4:5: Linux bezeichnet im engeren Sinne den freien, GPL-lizenzierten6: Linux-Kernel, wird aber allgemein verwendet, um darauf aufbauende7: freie Betriebssysteme zu bezeichnen.8:9: Im Sprachgebrauch der Free Software Foundation wird die bekannteste,10: unixoide Betriebssystemvariante als GNU/Linux bezeichnet, das aus dem11: Linux-Kernel und Betriebssystem-Komponenten von GNU und Anderen12: kombiniert ist. Weniger bekannte Betriebssysteme, die den Linux-Kernel13: einsetzen sind z.B. das Dresden Real-Time Operating System Project14: (DROPS) sowie Linux für Microcontroller (µCLinux). Beide sind jedoch15: nicht, wie Linux, unixoid aufgebaut. Linux ist kein waschechtes Unix,16: auch wenn das immer wieder fälschlicherweise behauptet wird.17:18: Die Bezeichnung Linux wird im heutigen Sprachgebrauch meist für ganze19: Installationen, oder Linux-Distributionen verwendet, in denen20: umfangreiche, meist freie Software zusammengestellt ist. Sie enthält21: den Linux-Kernel, die GNU-Software und viele darüber hinausgehende22: Programme wie freie X11-Grafikserver, Arbeitsoberflächen (z.B. GNOME23: oder KDE), Bürosoftware (z.B. OpenOffice.org), Bildbearbeitung24: (z.B. Gimp) oder Webserver (z.B. Apache).25:26: (Text von http://de.wikipedia.org/wiki/Linux )

Dies ist kein sehr praxisnahes Beispiel, vor allem, weil Unix/Linux natürlich wieder einen mächtigen Befehl bereithält, der das ganze kinderleicht macht:
cat -n linux_definition.txt
erzeugt die gleiche Ausgabe wie unser Awk-Programm. Will man nur die nicht leeren Zeilen nummeriert haben, so ruft man cat mit der Option -b auf. Mit Awk geht dies wie folgt:

awk ‘{ i += 1; if (length($0) > 0) {print i”: “$0} else { print } }’ linux_definition.txt

powered by performancing firefox

Drucken PDF

Switch to our mobile site