awk: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 26: | Zeile 26: | ||
* [[/Ausgabe anzeigen|Ausgabe anzeigen]] | * [[/Ausgabe anzeigen|Ausgabe anzeigen]] | ||
* [[/Ausdrücke|Ausdrücke]] | * [[/Ausdrücke|Ausdrücke]] | ||
<!-- | |||
=== Beispiele === | |||
$ awk 'BEGIN { FS = "," } ; \ | |||
{ print "{{Auftritt|" $3 "." $2 "." $1 "|CH|" $5 "||" $4 "}}" }' \ | |||
input.csv > output.csv | |||
awk 'BEGIN { FS = "|" } ; { print $4}' Check.csv | |||
--> | |||
<!-- | <!-- | ||
== Aufruf und Optionen == | == Aufruf und Optionen == | ||
Zeile 493: | Zeile 503: | ||
<tt>$ <b>awk '$2 > 6' file</b></tt> | <tt>$ <b>awk '$2 > 6' file</b></tt> | ||
Prüfung jeder Zeile der Ausgabe von "ps -ax", ob die | Prüfung jeder Zeile der Ausgabe von "ps -ax", ob die Prozessnummer ("$1") unter 100 liegt. Trifft dies zu, werden die Prozessnummer, ein Leerzeichen und der Befehlsname ("$5") ausgedruckt.<br> | ||
<tt>$ <b>ps -ax | awk '$1 > 100 { print $1 " " $5 }'</b></tt> | <tt>$ <b>ps -ax | awk '$1 > 100 { print $1 " " $5 }'</b></tt> | ||
Prüfung jeder Zeile der Ausgabe von "ps -ax", ob die | Prüfung jeder Zeile der Ausgabe von "ps -ax", ob die Prozessnummer ("$1") zwischen 50 und 60 liegt. Trifft dies zu, werden die Prozessnummer, ein Leerzeichen und der Befehlsname ("$5") ausgedruckt.<br> | ||
<tt>$ <b>ps -ax | awk '$1 > 50 && $1 < 60 { print $1 " " $5 }'</b></tt> | <tt>$ <b>ps -ax | awk '$1 > 50 && $1 < 60 { print $1 " " $5 }'</b></tt> | ||
Zeile 622: | Zeile 632: | ||
awk 'NF > 0' file > noemptylines | awk 'NF > 0' file > noemptylines | ||
Berechnung der Dateigrösse in | Berechnung der Dateigrösse in Byte. | ||
$ <b>ls -l /etc/passwd | awk '{ x += $5 } END { print " | $ <b>ls -l /etc/passwd | awk '{ x += $5 } END { print "Byte: " x }'</b> | ||
Byte: 1232 | |||
Ein kleines C-Programm, das auf der Konsole den ASCII-Code von 33-127 ausdruckt (7 Bit). Zuerst wird die Textdatei "ascii.c" geschrieben, danach mit gcc kompiliert. Die ausführbare Datei heisst dann "asc". | Ein kleines C-Programm, das auf der Konsole den ASCII-Code von 33-127 ausdruckt (7 Bit). Zuerst wird die Textdatei "ascii.c" geschrieben, danach mit gcc kompiliert. Die ausführbare Datei heisst dann "asc". | ||
Zeile 838: | Zeile 848: | ||
... | ... | ||
--> | --> | ||
== Weblinks == | == Weblinks == | ||
Zeile 845: | Zeile 856: | ||
{{url_dewikipedia|Awk|awk}} | {{url_dewikipedia|Awk|awk}} | ||
{{Fuss}} | {{Fuss}} | ||
* http://de.wikibooks.org/wiki/Awk:_%C3%9Cbungen:_Aktionen | |||
* http://linuxint.com/DOCS/Linux_Docs/openbook_shell/shell_015_000.htm | |||
=== Alte Weblinks === | === Alte Weblinks === | ||
Zeile 856: | Zeile 870: | ||
{{cat|Programmiersprache}} | {{cat|Programmiersprache}} | ||
{{cat|Shell-Befehl}} | {{cat|Shell-Befehl}} | ||
{{cat|Skriptsprache}} | |||
{{cat|Texteditor}} | {{cat|Texteditor}} | ||
{{cat|Textverarbeitung}} | {{cat|Textverarbeitung}} |
Aktuelle Version vom 26. September 2013, 20:03 Uhr
Der Shell-Befehl awk ist gleichzeitig eine Programmiersprache (Skriptsprache) zur Bearbeitung und Auswertung einfacher Textdaten, beispielsweise CSV-Dateien. Die Bezeichnung "awk" ist aus den Anfangsbuchstaben der Nachnamen ihrer drei Autoren Alfred V. Aho, Peter J. Weinberger und Brian W. Kernighan zusammengesetzt.
awk arbeitet fast ausschließlich mit dem Datentyp Zeichenkette (engl. string). Daneben sind assoziative Arrays (also mit Zeichenketten indizierte Arrays, auch Hashs genannt) und reguläre Ausdrücke grundlegende Bestandteile der Sprache. Zu den Fähigkeiten des Programms gehören:
- Suchen und Ersetzen von Textmustern
- Zugriff auf einzelne Felder
- Bildung von Summen
- Erkennung regulärer Ausdrücke
- Vornahme von "BEGIN"- und "END"-Verarbeitungen
- Zugriff auf die awk-Programmiersprache (beschrieben im Dokument "POSIX 1002.3 Command language and utilities standard")
Eine Version von awk ist heute in jedem Unix-System zu finden und ist auch für fast alle anderen Betriebssysteme verfügbar. Unter Linux wird die GNU Implementierung gawk benutzt, die ausser allen im POSIX-Standard vorgesehenen Features auch die Erweiterungen aus SVR4 unterstützt. awk ist z. B. bei Ubuntu 7.10 auf gawk gelinkt.
$ ls -al $(which awk) lrwxrwxrwx 1 root root 21 2007-08-02 13:32 /usr/bin/awk -> /etc/alternatives/awk $ ls -al /etc/alternatives/awk lrwxrwxrwx 1 root root 13 2007-10-31 15:17 /etc/alternatives/awk -> /usr/bin/gawk
Verwendung
- Textdateien für die Beispiele
- Einstieg in awk
- Reguläre Ausdrücke
- Lesen von Eingabedateien
- Ausgabe anzeigen
- Ausdrücke
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Arnold D. Robbins | eng | AWK language programming (A user's guide for GNU AWK, Edition 1.0, January 1996)wbm | |
M. Pertsch | ger | awk! Hat das vielleicht was mit "hässlich" zu tun?wbm | |
Wikipedia | ger | awkwbm | Enzyklopädischer Artikel |
- http://de.wikibooks.org/wiki/Awk:_%C3%9Cbungen:_Aktionen
- http://linuxint.com/DOCS/Linux_Docs/openbook_shell/shell_015_000.htm
Alte Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Burkhard Wald | ger | AWK - Tool und Programmiersprache http://www.uni-essen.de/~hrz030/unix/awk.html |