Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Über die Autoren
Über dieses Buch
Linux vs. BSD
1 Der Kernel
2 Die Grundlagen aus Anwendersicht
3 Die Shell
4 Reguläre Ausdrücke
5 Tools zur Dateibearbeitung
6 Die Editoren
7 Shellskriptprogrammierung
8 Benutzerverwaltung
9 Grundlegende Verwaltungsaufgaben
10 Netzwerk-Grundlagen
11 Anwendersoftware für das Netzwerk
12 Netzwerkdienste
13 Mailserver unter Linux
14 LAMP
15 DNS-Server
16 Secure Shell
17 Die grafische Oberfläche
18 Window-Manager und Desktops
19 X11-Programme
20 Multimedia und Spiele
21 Softwareentwicklung
22 Crashkurs in C und Perl
23 Sicherheit
24 Prozesse und IPC
25 Bootstrap und Shutdown
26 Dateisysteme
27 Virtualisierung und Emulatoren
A Die Installation
B Lösungen zu den einzelnen Aufgaben
C Kommandoreferenz
D X11-InputDevices
E MBR
F Die Buch-DVDs
G Glossar
H Literatur

Download:
- ZIP, ca. 6,3 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Plötner, Steffen Wendzel
Das distributionsunabhängige Handbuch
Buch: Linux

Linux
2., aktualisierte und erweiterte Auflage
1119 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1090-4
gp 4 Reguläre Ausdrücke
  gp 4.1 Aufbau von regulären Ausdrücken
  gp 4.2 Der Stream-Editor sed
    gp 4.2.1 Was bringt mir sed?
    gp 4.2.2 Erste Schritte mit sed
    gp 4.2.3 sed-Befehle
    gp 4.2.4 Nach Zeilen filtern
    gp 4.2.5 Wiederholungen in regulären Ausdrücken
  gp 4.3 grep
    gp 4.3.1 grep -E und egrep
    gp 4.3.2 Geschwindigkeitsvergleich
  gp 4.4 awk
    gp 4.4.1 Nutzen und Interpreter
    gp 4.4.2 Der Aufruf von awk
    gp 4.4.3 Erste Gehversuche
    gp 4.4.4 Der Anweisungsblock
    gp 4.4.5 Variablen
    gp 4.4.6 Arrays
    gp 4.4.7 Bedingte Anweisungen
    gp 4.4.8 Schleifen
    gp 4.4.9 Funktionen in awk
    gp 4.4.10 Ein paar Worte zum Schluss
  gp 4.5 Zusammenfassung
  gp 4.6 Aufgaben


Galileo Computing

4.3 grep  downtop

Kommen wir nun zu einem weiteren Programm namens grep. grep kann ähnlich wie sed Filterausdrücke aus einem Inputstream filtern. Jedoch kann grep diese nicht manipulieren. Vielmehr liegen die Stärken von grep in der einfachen Handhabung und in der höheren Geschwindigkeit gegenüber sed.

Zum Filtern von Ausdrücken übergibt man grep einfach den gewünschten Ausdruck und entweder eine Eingabedatei oder den Input aus einer Pipe bzw. manuell über die Standardeingabe.

$ grep 'n$' Standorte 
Bremen 
Friedrichshafen 
Aschersleben 
Berlin 
Essen 
Furtwangen 
Kehlen 
Kempten

Listing 4.18    grep

Filternegierung

Zudem kann man die Filtervorgabe negieren, womit grep alle Zeilen ausgibt, die nicht dem angegebenen Ausdruck entsprechen. Dies wird mit der -v-Option bewerkstelligt.

$ grep -v 'n$' Standorte 
Augsburg 
Bernburg 
Halle 
Krumbach 
Osnabrueck

Listing 4.19    grep -v


Galileo Computing

4.3.1 grep -E und egrep  downtop

Sehr hilfreich ist die Fähigkeit, mehrere Ausdrücke in einem Befehl zu filtern. Dabei verwendet man ein logisches »ODER« in Form eines Pipe-Zeichens zwischen den Ausdrücken und entweder grep mit der Option -E oder das Programm egrep.

$ egrep -v 'n$|k$' Standorte 
Augsburg 
Bernburg 
Halle 
Krumbach 
$ grep -vE 'n$|k$' Standorte 
Augsburg 
Bernburg 
Halle 
Krumbach

Listing 4.20    egrep

Ein Blick in die Manpage verrät uns das Geheimnis: egrep ist mit einem Aufruf von grep –E gleichzusetzen. Zudem findet man im Dateisystem, zumindest unter Slackware-Linux, den symbolischen Link /bin/egrep auf /bin/grep. Dies bedeutet, dass das Programm grep intern abfragt, ob der Programmname »egrep« oder nur »grep« ist, und sein Verhalten der Option -E im Falle von »egrep« automatisch anpasst.


Galileo Computing

4.3.2 Geschwindigkeitsvergleich  toptop

Da wir einen Test auf einen regulären Ausdruck sowohl mit sed als auch mit grep durchführen können, interessiert uns natürlich, welches Programm das schnellere ist. Besonders Shellskripts, die große String-Mengen durchsehen müssen, können dadurch eventuell sinnvoll optimiert werden.

Zum Test erzeugen wir eine 188 MB große Datei mit dem Namen »TESTFILEB«, in der unterschiedlich lange Textstrings enthalten sind. Das Testsystem läuft unter Slackware-Linux 9.1 mit Kernel-2.4.22, einem AMD Athlon XP 2400+-Prozessor und einer UDMA133-Platte. Hier nun die Testaufrufe sowie deren Ergebnisse:

  • sed -n '/n$/p' TESTFILEB >/dev/null
  • benötigte im Schnitt 9,358 Sekunden, um diese Datenmenge zu bewältigen.
  • grep 'n$' TESTFILEB >/dev/null
  • benötigte durchschnittlich nur 7,075 Sekunden.
  • Ein von uns speziell für diesen einen Filtervorgang entwickeltes, geschwindigkeitsoptimiertes, vom GNU-Compiler gcc-3.2.3 optimiertes, gestriptes C-Programm, in dem die darin verwendeten Standard-Libc-Funktionen strlen() und bzero() durch schnellere ersetzt wurden, benötigte übrigens nur noch 5.940 Sekunden. <Man könnte den Test noch schneller absolvieren, indem man beispielsweise auf Assembler zurückgreift, die Testdatei in eine virtuelle Partition im Hauptspeicher auslagert (oder komplett in den RAM einliest), eventuell eine andere Kernel-Version verwendet oder schlicht auf bessere Hardware zurückgreift.>


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Linux






 Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Einstieg in Linux






 Einstieg in Linux


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: Praxisbuch Netzwerk-Sicherheit






 Praxisbuch
 Netzwerk-Sicherheit


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de