Einführung, Tutorial und Referenz

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 Linux
2:
3: nach Wikipedia
4:
5: Linux bezeichnet im engeren Sinne den freien, GPL-lizenzierten
6: Linux-Kernel, wird aber allgemein verwendet, um darauf aufbauende
7: freie Betriebssysteme zu bezeichnen.
8:
9: Im Sprachgebrauch der Free Software Foundation wird die bekannteste,
10: unixoide Betriebssystemvariante als GNU/Linux bezeichnet, das aus dem
11: Linux-Kernel und Betriebssystem-Komponenten von GNU und Anderen
12: kombiniert ist. Weniger bekannte Betriebssysteme, die den Linux-Kernel
13: einsetzen sind z.B. das Dresden Real-Time Operating System Project
14: (DROPS) sowie Linux für Microcontroller (µCLinux). Beide sind jedoch
15: 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 ganze
19: Installationen, oder Linux-Distributionen verwendet, in denen
20: umfangreiche, meist freie Software zusammengestellt ist. Sie enthält
21: den Linux-Kernel, die GNU-Software und viele darüber hinausgehende
22: Programme wie freie X11-Grafikserver, Arbeitsoberflächen (z.B. GNOME
23: oder KDE), Bürosoftware (z.B. OpenOffice.org), Bildbearbeitung
24: (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

© Copyright 2004 - 2008, Bodenseo, Linux-Kurse am Bodensee, Bernd Klein