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

Inhaltsverzeichnis
Vorwort
1 Einleitung
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
5 Der Kernel
6 Die Grundlagen aus Anwendersicht
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP
20 DNS-Server
21 Secure Shell
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in die Sicherheit
33 Netzwerksicherheit überwachen
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Die Buch-DVDs
F Glossar
G Literatur
Stichwort

Download:
- ZIP, ca. 15,7 MB
Buch bestellen
Ihre Meinung?

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

Linux
geb., mit 2 DVDs
1302 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1704-0
Pfeil 8 Reguläre Ausdrücke
  Pfeil 8.1 Aufbau von regulären Ausdrücken
  Pfeil 8.2 Der Stream-Editor sed
    Pfeil 8.2.1 Was bringt mir sed?
    Pfeil 8.2.2 Erste Schritte mit sed
    Pfeil 8.2.3 sed-Befehle
    Pfeil 8.2.4 Nach Zeilen filtern
    Pfeil 8.2.5 Wiederholungen in regulären Ausdrücken
  Pfeil 8.3 grep
    Pfeil 8.3.1 grep -E und egrep
    Pfeil 8.3.2 Geschwindigkeitsvergleich
    Pfeil 8.3.3 Exkurs: PDF-Files mit grep durchsuchen
  Pfeil 8.4 awk
    Pfeil 8.4.1 Nutzen und Interpreter
    Pfeil 8.4.2 Der Aufruf des Interpreters awk
    Pfeil 8.4.3 Erste Gehversuche
    Pfeil 8.4.4 Der Anweisungsblock
    Pfeil 8.4.5 Variablen
    Pfeil 8.4.6 Arrays
    Pfeil 8.4.7 Bedingte Anweisungen
    Pfeil 8.4.8 Schleifen
    Pfeil 8.4.9 Funktionen in awk
    Pfeil 8.4.10 Ein paar Worte zum Schluss
  Pfeil 8.5 Zusammenfassung
  Pfeil 8.6 Aufgaben


Galileo Computing - Zum Seitenanfang

8.3 grep  Zur nächsten ÜberschriftZur vorigen Überschrift

Kommen wir nun zu einem weiteren Programm namens grep. Mit grep können Sie ähnlich wie mit sed Filterausdrücke aus einem Input-Stream 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 sowie entweder eine Eingabedatei oder den Input aus einer Pipe bzw. die Tastatur.

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

Listing 8.23  Das Programm 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 8.24  grep -v


Galileo Computing - Zum Seitenanfang

8.3.1 grep -E und egrep  Zur nächsten ÜberschriftZur vorigen Überschrift

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 sowie 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 8.25  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 lautet, und sein Verhalten der Option -E im Falle von egrep automatisch anpasst.



Galileo Computing - Zum Seitenanfang

8.3.2 Geschwindigkeitsvergleich  Zur nächsten ÜberschriftZur vorigen Überschrift

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.]

Galileo Computing - Zum Seitenanfang

8.3.3 Exkurs: PDF-Files mit grep durchsuchen  topZur vorigen Überschrift

Es ist möglich, mithilfe der poppler-utils (auch poppler-tools genannt), den Inhalt von PDF-Dateien in Textform auszugeben. Diese Textform kann dann wiederum mit Programmen wie grep durchsucht werden. Die poppler-utils stellen dazu das Programm pdftotext bereit. Übergeben wird dem Programm dabei zunächst ein Dateiname und als zweiter Parameter die Ausgabedatei oder ein »-« um zu signalisieren, dass der Inhalt der Datei auf die Standardausgabe geschrieben werden soll.

$ pdftotext CovertChannels.pdf – | grep portknocker
keywords : covert, channels, ... portknocker
It seems obvious that t... portknocker or ...
...

Listing 8.26  Eine PDF-Datei durchsuchen (Ausgabe gekürzt)

Die poppler-utils beinhalten übrigens auch einige weitere Programme wie etwa pdftohtml, mit dem der Inhalt von PDF-Dateien in HTML umgewandelt werden kann. Mit pdftops können die Dateien hingegen zum Postscript-Format konvertiert werden.

$ pdftohtml essay.pdf essay.html
Page-1
Page-2
...

Listing 8.27  Eine PDF-Datei in HTML konvertieren



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, Ausgabe 2011






Linux, Ausgabe 2011
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: openSUSE 11.2






 openSUSE 11.2


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
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