www.wikidata.de-de.nina.az
Dieser Artikel behandelt die Programmiersprache Fur weitere Bedeutungen siehe AWK awk ist eine Programmiersprache zur Bearbeitung und Auswertung beliebiger Textdaten u a auch CSV Dateien Der zugehorige Interpreter ist eher als Compiler zu betrachten weil der Programmtext zuerst komplett kompiliert und dann ausgefuhrt wird awk wurde primar als Reportgenerator konzipiert und war eines der ersten Werkzeuge das in der Version 3 von Unix erschien Man kann awk als Weiterentwicklung oder Erganzung des Streameditors sed betrachten sie teilen gewisse syntaktische Elemente wie etwa regulare Ausdrucke Im Unterschied zu sed stehen in awk aber C ahnliche Strukturen if then else verschiedene Schleifen C Formate zur Verfugung die einen wesentlich leichteren Programmaufbau erlauben In der Minimalanwendung wird awk in Shell Skripten eingesetzt um als Filter zum Beispiel Dateinamen zusammenzusetzen Mit ausfuhrlicheren Programmen gelingt es Textdateien zu bearbeiten umzuformen oder auszuwerten Dazu stehen neben den ublichen Stringfunktionen aber auch mathematische Grund Funktionen zur Verfugung Der Name awk ist aus den Anfangsbuchstaben der Nachnamen ihrer drei Autoren Alfred V Aho Peter J Weinberger und Brian W Kernighan zusammengesetzt Eine Version von awk ist heute in fast jedem unixahnlichen System zu finden und oft bereits vorinstalliert Ein vergleichbares Programm ist aber auch fur fast alle anderen Betriebssysteme verfugbar Die Sprache arbeitet fast ausschliesslich mit dem Datentyp Zeichenkette englisch string Daneben sind assoziative Arrays d h mit Zeichenketten indizierte Arrays auch Hashes genannt und regulare Ausdrucke grundlegende Bestandteile der Sprache Die Leistungsfahigkeit Kompaktheit aber auch die Beschrankungen der awk und sed Skripte regten Larry Wall zur Entwicklung der Sprache Perl an Inhaltsverzeichnis 1 Aufbau eines Programms 2 Variablen und Funktionen 3 Befehle 4 Bedingungen 5 Versionen Dialekte 6 Literatur 7 WeblinksAufbau eines Programms Bearbeiten nbsp Die typische Ausfuhrung eines awk Programms besteht darin Operationen etwa Ersetzungen auf einem Eingabetext durchzufuhren Dafur wird der Text zeilenweise eingelesen und anhand eines gewahlten Trenners ublicherweise eine Serie von Leerzeichen und oder Tabulatorzeichen in Felder aufgespalten Anschliessend werden die awk Anweisungen auf die jeweilige Zeile angewandt awk Anweisungen haben folgende Struktur Bedingung Anweisungsblock Fur die eingelesene Zeile wird ermittelt ob sie die Bedingung oft ein Regularer Ausdruck erfullt Ist die Bedingung erfullt wird der Code innerhalb des von geschweiften Klammern umschlossenen Anweisungsblocks ausgefuhrt Abweichend davon kann ein Statement auch nur aus einer Aktion Anweisungsblock oder nur aus einer Bedingung Bedingung bestehen Fehlt die Bedingung so wird die Aktion fur jede Zeile ausgefuhrt Fehlt die Aktion so wird als Standardaktion das Schreiben der ganzen Zeile ausgefuhrt sofern die Bedingung erfullt ist Variablen und Funktionen BearbeitenDer Benutzer kann Variablen innerhalb von Anweisungsblocken durch Referenzierung definieren eine explizite Deklaration ist nicht notwendig Der Gultigkeitsbereich der Variablen ist global Eine Ausnahme bilden hier Funktionsargumente deren Gultigkeit auf die sie definierende Funktion beschrankt ist Funktionen konnen an beliebiger Stelle definiert werden die Deklaration muss dabei nicht vor der ersten Nutzung erfolgen Falls es sich um Skalare handelt werden Funktionsargumente als Wertparameter ubergeben ansonsten als Referenzparameter Die Argumente bei Aufruf einer Funktion mussen nicht der Funktionsdefinition entsprechen uberzahlige Argumente werden als lokale Variablen behandelt ausgelassene Argumente mit dem speziellen Wert uninitialized numerisch Null und als Zeichenkette den Wert des leeren Strings versehen Funktionen und Variablen aller Art bedienen sich des gleichen Namensraums so dass gleiche Benennung zu undefiniertem Verhalten fuhrt Neben benutzerdefinierten Variablen und Funktionen stehen auch Standardvariablen und Standardfunktionen zur Verfugung beispielsweise die Variablen 0 fur die gesamte Zeile 1 2 fur das jeweils i te Feld der Zeile und FS von engl field separator fur den Feldtrenner sowie die Funktionen gsub split und match Befehle BearbeitenDie Syntax von awk ahnelt derjenigen der Programmiersprache C Elementare Befehle sind Zuweisungen an Variablen Vergleiche zwischen Variablen sowie Schleifen oder bedingte Befehlsausfuhrungen if else Daneben gibt es Aufrufe sowohl zu fest implementierten als auch zu selbst programmierten Funktionen Ausgeben von Daten auf der Standardausgabe ist durch den print Befehl moglich Um etwa das zweite Feld einer Eingabezeile auszudrucken wird der Befehl print 2 benutzt Bedingungen BearbeitenBedingungen sind in awk Programmen entweder von der Form Ausdruck Vergleichsoperator Ausdruck oder von der Form Ausdruck Matchoperator regulares Suchmuster Regulare Suchmuster werden wie beim grep Befehl gebildet und Matchoperatoren sind fur Muster gefunden und fur Muster nicht gefunden Als Abkurzung fur die Bedingung 0 regulares Suchmuster also die ganze Zeile erfullt das Suchmuster kann regulares Suchmuster verwendet werden Als spezielle Bedingungen gelten die Worte BEGIN und END bei denen die zugehorigen Anweisungsblocke vor dem Einlesen der ersten Zeile bzw nach Einlesen der letzten Zeile ausgefuhrt werden Daruber hinaus konnen Bedingungen mit logischen Verknupfungen zu neuen Bedingungen zusammengesetzt werden z B 1 E amp amp 2 gt 20 print 3 Dieser awk Befehl bewirkt dass von jeder Zeile die mit E beginnt und deren zweites Feld eine Zahl grosser 20 ist das dritte Feld ausgegeben wird Versionen Dialekte BearbeitenDie erste awk Version aus dem Jahr 1977 erfuhr 1985 eine Uberarbeitung durch die ursprunglichen Autoren die als nawk new awk bezeichnet wurde Sie bietet die Moglichkeit eigene Funktionen zu definieren sowie eine grossere Menge von Operatoren und vordefinierten Funktionen Der Aufruf erfolgt zumeist dennoch uber awk seit eine Unterscheidung zwischen beiden Versionen obsolet geworden ist Das GNU Projekt der Free Software Foundation stellt unter dem Namen gawk eine nochmals erweiterte freie Variante zur Verfugung Eine weitere freie Implementierung ist mawk von Mike Brennan mawk ist kleiner und schneller als gawk was allerdings durch einige Einschrankungen erkauft wird Auch BusyBox enthalt eine kleine awk Implementierung Literatur BearbeitenAlfred V Aho Brian W Kernighan Peter J Weinberger Die Programmiersprache AWK OSTC Verlag 2010 ISBN 978 3 9811280 0 0 Alfred V Aho Brian W Kernighan and Peter J Weinberger The AWK Programming Language Addison Wesley 1988 ISBN 0 201 07981 X Dale Dougherty and Arnold Robbins sed amp awk O Reilly amp Associates 1997 ISBN 1 56592 225 5 Helmut Herold awk und SED 3 Auflage Addison Wesley 2003 ISBN 3 8273 2094 1 Arnold Robbins GAWK Effective AWK Programming A User s Guide for GNU Awk O Reilly 2001 ISBN 0 596 00070 7 aktuelle Version online Jurgen Peters Programmieren mit awk Oldenbourg 1990 ISBN 3 486 21504 3 Reinhold Kalteis awk Die Programmiersprache fur UNIX und DOS Franzis 1991 ISBN 3 7723 4231 0 Gottfried Staubach UNIX Werkzeuge zur Textmusterverarbeitung Springer 1989 ISBN 3 540 51232 2 und ISBN 0 387 51232 2 Weblinks Bearbeiten nbsp Wikibooks Awk Lern und Lehrmaterialien b awk 1 b pattern directed scanning and processing language OpenBSD General Commands Manual b awk P b pattern scanning and processing language Debian POSIX Programmer s Manual GNU awk Website http www ostc de awk pdf Ausfuhrliche Beschreibung auf Deutsch PDF 340 kB Unix Befehle der GNU Core UtilitiesDateien chgrp chown chmod cp dd df dir dircolors install ln ls mkdir mkfifo mknod mv rm rmdir shred sync touch vdirText awk cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste ptx pr sha1sum sed sort split sum tac tail tr tsort unexpand uniq wcShell basename chroot date dirname du echo env expr factor false groups hostid id link logname nice nohup pathchk pinky printenv printf pwd readlink seq sleep stat stty tee test true tty uname unlink users who whoami yes Normdaten Sachbegriff GND 4242961 4 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Awk amp oldid 227236650