Sysadmin-Aufgaben mit AWK bewältigen
Reguläre Zaubereien
von Nico Hochgeschwender
Erschienen im Linux-Magazin
2004/10
Tabellarisch aufgebaute Textfiles sind mit AWK bequem zu durchsuchen und zu verarbeiten. Gerade Admins schätzen an dem Sprachen-Klassiker, dass er auf jedem Unix-ähnlichen System zum Standard gehört. Dieser Artikel gibt eine Einführung.
Admins müssen bei ihrer täglichen Arbeit häufig Textdateien automatisch verarbeiten, sei es um Logfiles auszuwerten, Konfigurationen zu erzeugen oder zu ändern oder um neue Accounts anzulegen. Entsprechend vielfältig sind die Werkzeuge, die Unix und Linux hierfür anbieten: Von vergleichsweise einfachen Tools wie »sed« und »ed« bis zu ausgewachsenen Programmiersprachen wie Perl, Tcl oder gar C bleibt dem Admin eine breite Auswahl.
Zu den Klassikern gehört die handliche Programmiersprache AWK. Ihre Syntax ähnelt der von C, der Einstieg wird daher jedem C-Programmierer leicht fallen. Der Name AWK leitet sich von den drei Autoren Aho, Weinberger und Kernighan ab. Die frei (im Sinne der GPL) erhältliche AWK-Version »gawk«[1] gehört zum Standardumfang jeder Linux-Distribution.
Da auch die herkömmlichen Unix-Systeme AWK enthalten, eignet es sich besonders für plattformunabhängige Skripte. Wer Solaris, HP/UX und AIX-Server neben Windows- und Linux-Rechnern zu betreuen hat, wird kaum auf AWK verzichten wollen. Als Beispiel dient im Folgenden die Rechnerliste in Listing 1. Ihre Spalten enthalten Rechnername, IP-Adresse, Betriebssystem, Software und RAM-Größe.
DagobertDuck 10.1.1.3 Debian Kylix 256
Goofy1 10.1.1.4 Solaris Mathematica 512
MickeyMouse 10.1.1.5 Debian Apache 512
LuckyLuke1 10.1.1.6 Debian Samba 256
LuckyLuke2 10.1.1.7 Debian Eclipse 256
LuckyLuke3 10.1.1.8 Suse Mupad 256
LuckyLuke4 10.1.1.9 Debian Mupad 128
LuckyLuke43 10.1.1.10 Debian Mupad 128
LuckyMickeyMouse 10.1.1.11 Debian Mupad 128
Asterix1 10.1.1.12 RedHat NetBeans 128
Asterix2 10.1.1.13 Debian NFS 256
Obelix 10.1.1.14 RedHat ICC 256
Apfel1 10.1.1.15 OSX Photoshop 1024
Apfel2 10.1.1.16 OS6 Photoshop 128
Apfel3 10.1.1.17 OSX Photoshop 512
|
Arbeitsprinzip
Ein AWK-Skript verarbeitet seine Eingabedatei zeilenweise und untersucht sie nach Mustern. Findet es eine passende Stelle, führt AWK eine definierte Aktion aus. Hat der Programmierer kein Muster angegeben, führt AWK die Aktion für jede Zeile aus. Bei einfachen Einzeilern bietet sich folgende Aufrufkonvention an:
gawk 'AWK-Programm' Eingabedateien
Größere AWK-Skripte sind in einer eigenen Datei besser aufgehoben. Der Aufruf lautet dann »gawk -f Skriptdatei Eingabefiles«. Als Erstes soll AWK alle Rechnernamen aus der Beispieldatei (Listing 1) listen:
gawk '{print $1}' liste
Das Feld »$1« entspricht der ersten Spalte. Wer lieber die IP-Adressen wissen will, ersetzt »$1« durch »$2«. Die komplette Zeile entspricht »$0«: Der Aufruf »gawk \'{print $0}\' liste« gibt die komplette Datei auf dem Bildschirm aus.
Musterspiele
Alle Information zum Rechner mit Namen Goofy1 lassen sich mit Hilfe eines Musters ermitteln:
gawk '$1=="Goofy1" {print $0}' liste
AWK prüft in jeder Zeile, ob in der Spalte »$1« genau das Muster »Goofy1« auftritt. Wenn ja, gibt »{print $0}« die ganze Zeile aus. Statt des Gleichheitsoperators »==« würde der Negationsoperator »!=« dafür sorgen, dass AWK das Kommando nur ausführt, wenn das Muster nicht passt (siehe Tabelle 1). Das Kommando »gawk \'$1 != "Goofy1" {print $0}\' liste« dagegen schreibt den Inhalt jener Zeilen auf die Standardausgabe, bei denen der String »Goofy1« nicht in der ersten Spalte auftritt.
Nicht nur einzelne Muster lassen sich mit AWK ermitteln, sondern auch Bereiche. Der folgende Aufruf benutzt zwei reguläre Ausdrücke (siehe Tabelle 2), die jeweils in Schrägstrichen eingeschlossen sind und von AWK mit der ganzen Zeile verglichen werden:
gawk '/Goofy1/,/Asterix/ {print $0}' liste
Als Ausgabe erscheint der komplette Bereich vom Muster »Goofy1« bis einschließlich »Asterix1«.
|
|
|
Operator
|
Erklärung
|
|
$
|
Feldoperator
|
|
++ -
|
Postfix-Inkrement und -Dekrement
|
|
++ -
|
Präfix-Inkrement und -Dekrement
|
|
^
|
Potenzierung
|
|
!
|
logische Negation
|
|
+ -
|
Vorzeichen-Operationen
|
|
* / %
|
Multiplikation, Division, Modulo-Operation
|
|
+ -
|
Addition, Subtraktion
|
|
<
|
kleiner als
|
|
<=
|
kleiner oder gleich
|
|
==
|
gleich
|
|
!=
|
ungleich
|
|
Operator
|
Erklärung
|
|
>=
|
größer oder gleich
|
|
>
|
größer
|
|
~ !~
|
Vergleich mit regulärem Ausdruck
|
|
&&
|
logisches UND
|
|
||
|
logisches ODER
|
|
=
|
Zuweisung
|
|
+=
|
Addition und Zuweisung
|
|
-=
|
Subtraktion und Zuweisung
|
|
*=
|
Multiplikation und Zuweisung
|
|
/=
|
Division und Zuweisung
|
|
%=
|
Modulo-Operation und Zuweisung
|
|
^=
|
Potenzierung und Zuweisung
|
|
|
|
Ausdruck
|
Erklärung
|
|
.
|
Ersetzt irgendein Zeichen
|
|
^
|
Findet den folgenden regulären Ausdruck nur am Anfang einer Zeile
|
|
$
|
Findet den vorangehenden regulären Ausdruck nur am Ende einer Zeile
|
|
[ ]
|
Findet ein beliebiges der in Klammern eingeschlossenen Zeichen
|
|
[a-d1-7]
|
Zeichenklassen mit Bereichen: alle Buchstaben von a bis d und Ziffern von 1 bis 7
|
|
X?
|
Deckt entweder kein oder genau ein X ab
|
|
X*
|
Deckt kein oder mehrere X ab
|
|
X|Z
|
Deckt X oder Z ab
|
|
XZ
|
Deckt X unmittelbar gefolgt von Z ab
|
|
Ähnliche Artikel
|
|
Zwischen Stuhl und Tasten
|
Security Awareness: Der Mensch als Sicherheitsrisiko
|
|
Tux liest
|
Firewalls in Theorie und Praxis
|
|
Platz da!
|
Leistungsfähige Webspace-Angebote, die auf Linux
basieren
|
|
Bank 24
|
Vorgestellt: Die Informix-Version 11 mit neuen Konzepten
für Hochverfügbarkeit
|
|
Von wegen tugendhaft
|
KVM-basierte Enterprise-Virtualisierung von Red Hat
|
|
Mehrarbeit für CPUs
|
Virtualisierung kennt viele Spielarten - vom Soft-PC bis
zur OS-Partition
|
| Whitepaper |
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|