A. Willemer Wie werde ich UNIX-Guru
| | I ANWENDUNG |
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.
|
II ADMINISTRATION |
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel
|
III NETZWERK |
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls
|
IV DAS X-WINDOW SYSTEM |
Die grafische Oberfläche von UNIX einrichten und nutzen
|
V PROGRAMMIERUNG VON SHELLSKRIPTEN |
Automatisieren von Tasks durch Shell-Skripte.
|
VI PERL |
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk
|
VII PROGRAMMIERWERKZEUGE |
C-Compiler, Analyse-Tools, CVS, yacc, diff
|
VIII UNIX-SYSTEMAUFRUFE |
UNIX-Befehle in eigenen Programmen nutzen
|
IX LITERATUR |
Weiterführende Literatur zu UNIX und LINUX
|
| |
In vielen Programmen werden zum Suchen von Mustern reguläre Ausdrücke
verwendet. Beeindruckend ist, dass alle Programme die Ausdrücke gleich
interpretieren. Das liegt allerdings nicht in erster Linie an der Harmoniesucht
der UNIX-Programmierer, sondern einfach daran, dass UNIX die benötigten
Funktionen als Bibliothek zur Verfügung stellt.
Nach POSIX-Standard werden vier Funktionen zur Verfügung gestellt: regcomp() ,
regexec() , regerror() und regfree() . regcomp() übersetzt eine Zeichenkette
mit einem regulären Ausdruck in eine Variable vom Typ regex_t. Diese wird
dann mit der Funktion regexec() auf den zu durchsuchenden Text angewandt.
Wird die Variable nicht mehr benötigt, wird sie mit regfree() freigegeben.
regerror() wandelt die Fehlernummern, die regcomp() oder regexec() erzeugen,
in eine Fehlermeldung um.
Programme, die diese Funktionen benutzen müssen die Datei regex.h
einbinden.
Als Beispiel dient hier eine einfache Nachbildung des Programmes grep .
[Regulärer Ausdruck in grep]
#include <stdlib.h>
#include <stdio.h>
#include <regex.h>
int main(int argc, char *argv[])
{
char puffer[512];
int i;
regex_t regexpr;
FILE *fp;
if (argc<3) {
printf("Usage: %s regexpression filesn", argv[0]);
return -1;
}
if (regcomp(®expr, argv[1], REG_EXTENDED|REG_NEWLINE)) {
printf("Problem beim Ausdruck %sn", argv[1]);
return -2;
}
for (i=2; i<argc; i++) {
fp = fopen(argv[i], "r");
if (fp!=NULL) {
while (!feof(fp)) {
fgets(puffer, sizeof(puffer)-1, fp);
if (regexec(®expr, puffer, 0, NULL, 0)==0) {
puts(puffer);
}
}
fclose(fp);
}
}
regfree(®expr);
return 0;
}
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|