reguläre ausdrücke - proseminar unix tools

106
Regul¨ are Ausdr¨ ucke Proseminar UNIX Tools Ferdinand Beyer Technische Universit¨ at M¨ unchen 08.11.2005 Ferdinand Beyer (TUM) Regul¨ are Ausdr¨ ucke 08.11.2005 1 / 39

Upload: hathuan

Post on 31-Dec-2016

230 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Reguläre Ausdrücke - Proseminar UNIX Tools

Regulare AusdruckeProseminar UNIX Tools

Ferdinand Beyer

Technische Universitat Munchen

08.11.2005

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 1 / 39

Page 2: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines

Gliederung

1 Allgemeines

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 2 / 39

Page 3: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Beschreibung

Gliederung

1 AllgemeinesBeschreibungBezeichnungenEinsatzgebiete in UNIX-ToolsNotationsarten

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 3 / 39

Page 4: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Beschreibung

Beschreibung

Regulare Ausdrucke

dienen der Beschreibung einer formalen Sprache

d.h. sie beschreiben eine Menge von Zeichenketten

werden ublicherweise als Stringmuster (engl.: pattern) notiert

lassen sich relativ einfach mit endlichen Automaten implementieren

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 4 / 39

Page 5: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Beschreibung

Beschreibung

Regulare Ausdrucke

dienen der Beschreibung einer formalen Sprache

d.h. sie beschreiben eine Menge von Zeichenketten

werden ublicherweise als Stringmuster (engl.: pattern) notiert

lassen sich relativ einfach mit endlichen Automaten implementieren

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 4 / 39

Page 6: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Beschreibung

Beschreibung

Regulare Ausdrucke

dienen der Beschreibung einer formalen Sprache

d.h. sie beschreiben eine Menge von Zeichenketten

werden ublicherweise als Stringmuster (engl.: pattern) notiert

lassen sich relativ einfach mit endlichen Automaten implementieren

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 4 / 39

Page 7: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Beschreibung

Beschreibung

Regulare Ausdrucke

dienen der Beschreibung einer formalen Sprache

d.h. sie beschreiben eine Menge von Zeichenketten

werden ublicherweise als Stringmuster (engl.: pattern) notiert

lassen sich relativ einfach mit endlichen Automaten implementieren

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 4 / 39

Page 8: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Bezeichnungen

Gliederung

1 AllgemeinesBeschreibungBezeichnungenEinsatzgebiete in UNIX-ToolsNotationsarten

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 5 / 39

Page 9: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Bezeichnungen

Bezeichnungen

Gebrauchliche Namen und Abkurzungen

Englisch: regular expressions

Abkurzungen: RegExp, Regex, RE

In man-Pages oft PATTERN

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 6 / 39

Page 10: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Bezeichnungen

Bezeichnungen

Gebrauchliche Namen und Abkurzungen

Englisch: regular expressions

Abkurzungen: RegExp, Regex, RE

In man-Pages oft PATTERN

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 6 / 39

Page 11: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Bezeichnungen

Bezeichnungen

Gebrauchliche Namen und Abkurzungen

Englisch: regular expressions

Abkurzungen: RegExp, Regex, RE

In man-Pages oft PATTERN

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 6 / 39

Page 12: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Einsatzgebiete in UNIX-Tools

Gliederung

1 AllgemeinesBeschreibungBezeichnungenEinsatzgebiete in UNIX-ToolsNotationsarten

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 7 / 39

Page 13: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Einsatzgebiete in UNIX-Tools

Einsatzgebiete in UNIX-Tools

Einsatzgebiete fur regulare Ausdrucke

Suchen (und eventuell Ersetzen) von Zeichenketten eines bestimmtenMusters in Texten(z.B. vi, emacs, sed)

Filtern von Informationen(z.B. grep)

Erkennen und Klassifizieren von Teilstrings (tokens) fur dielexikalische Analyse von Texten (→ Compilerbau)(z.B. lex)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 8 / 39

Page 14: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Einsatzgebiete in UNIX-Tools

Einsatzgebiete in UNIX-Tools

Einsatzgebiete fur regulare Ausdrucke

Suchen (und eventuell Ersetzen) von Zeichenketten eines bestimmtenMusters in Texten(z.B. vi, emacs, sed)

Filtern von Informationen(z.B. grep)

Erkennen und Klassifizieren von Teilstrings (tokens) fur dielexikalische Analyse von Texten (→ Compilerbau)(z.B. lex)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 8 / 39

Page 15: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Einsatzgebiete in UNIX-Tools

Einsatzgebiete in UNIX-Tools

Einsatzgebiete fur regulare Ausdrucke

Suchen (und eventuell Ersetzen) von Zeichenketten eines bestimmtenMusters in Texten(z.B. vi, emacs, sed)

Filtern von Informationen(z.B. grep)

Erkennen und Klassifizieren von Teilstrings (tokens) fur dielexikalische Analyse von Texten (→ Compilerbau)(z.B. lex)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 8 / 39

Page 16: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Gliederung

1 AllgemeinesBeschreibungBezeichnungenEinsatzgebiete in UNIX-ToolsNotationsarten

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 9 / 39

Page 17: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 18: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 19: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 20: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 21: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 22: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 23: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 24: Reguläre Ausdrücke - Proseminar UNIX Tools

Allgemeines Notationsarten

Notationsarten

Die wichtigsten Formen von regularen Ausdrucken

Basic (“simple”/“obsolete”) regular expressions (BRE)

Extended (“modern”) regular expressions (ERE)

Perl / Perl-compatible regular expressions (PCRE)

Hinweise

BREs existieren hauptsachlich noch fur Abwartskompatibilitat mitalteren Programmen

Im Nachfolgenden wird die Notation fur EREs besprochen

Anschließend werden die Unterschiede zu BREs aufgezeigt

PCREs entsprechen weitgehend EREs

Relevant fur UNIX-Tools sind nur BREs und EREs

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 10 / 39

Page 25: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation

Gliederung

1 Allgemeines

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 11 / 39

Page 26: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichen und Metazeichen

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 12 / 39

Page 27: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichen und Metazeichen

Zeichen und Metazeichen

Ein regularer Ausdruck besteht aus Zeichenliteralen undMetazeichen

Die Metazeichen [ ] ( ) { } ? + * ^ $ \ . haben einebesondere Bedeutung fur den Ausdruck

Sonstige Zeichen sind Zeichenliterale und stehen fur sich selbst

Um Metazeichen als Zeichenliterale zu behandeln, mussen sie mitvorangestelltem Backslash \ notiert werden (“maskieren”; engl.: “toescape”)

Beispiele

au findet “au” in “Haus” und “Maus”

\(TODO\) findet den String “(TODO)”

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 13 / 39

Page 28: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichen und Metazeichen

Zeichen und Metazeichen

Ein regularer Ausdruck besteht aus Zeichenliteralen undMetazeichen

Die Metazeichen [ ] ( ) { } ? + * ^ $ \ . haben einebesondere Bedeutung fur den Ausdruck

Sonstige Zeichen sind Zeichenliterale und stehen fur sich selbst

Um Metazeichen als Zeichenliterale zu behandeln, mussen sie mitvorangestelltem Backslash \ notiert werden (“maskieren”; engl.: “toescape”)

Beispiele

au findet “au” in “Haus” und “Maus”

\(TODO\) findet den String “(TODO)”

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 13 / 39

Page 29: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichen und Metazeichen

Zeichen und Metazeichen

Ein regularer Ausdruck besteht aus Zeichenliteralen undMetazeichen

Die Metazeichen [ ] ( ) { } ? + * ^ $ \ . haben einebesondere Bedeutung fur den Ausdruck

Sonstige Zeichen sind Zeichenliterale und stehen fur sich selbst

Um Metazeichen als Zeichenliterale zu behandeln, mussen sie mitvorangestelltem Backslash \ notiert werden (“maskieren”; engl.: “toescape”)

Beispiele

au findet “au” in “Haus” und “Maus”

\(TODO\) findet den String “(TODO)”

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 13 / 39

Page 30: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichen und Metazeichen

Zeichen und Metazeichen

Ein regularer Ausdruck besteht aus Zeichenliteralen undMetazeichen

Die Metazeichen [ ] ( ) { } ? + * ^ $ \ . haben einebesondere Bedeutung fur den Ausdruck

Sonstige Zeichen sind Zeichenliterale und stehen fur sich selbst

Um Metazeichen als Zeichenliterale zu behandeln, mussen sie mitvorangestelltem Backslash \ notiert werden (“maskieren”; engl.: “toescape”)

Beispiele

au findet “au” in “Haus” und “Maus”

\(TODO\) findet den String “(TODO)”

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 13 / 39

Page 31: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichen und Metazeichen

Zeichen und Metazeichen

Ein regularer Ausdruck besteht aus Zeichenliteralen undMetazeichen

Die Metazeichen [ ] ( ) { } ? + * ^ $ \ . haben einebesondere Bedeutung fur den Ausdruck

Sonstige Zeichen sind Zeichenliterale und stehen fur sich selbst

Um Metazeichen als Zeichenliterale zu behandeln, mussen sie mitvorangestelltem Backslash \ notiert werden (“maskieren”; engl.: “toescape”)

Beispiele

au findet “au” in “Haus” und “Maus”

\(TODO\) findet den String “(TODO)”

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 13 / 39

Page 32: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Beliebige Zeichen

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 14 / 39

Page 33: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Beliebige Zeichen

Beliebige Zeichen

Ein Punkt . deckt ein beliebiges Zeichen ab

Einzige Ausnahme ist das Newline-Zeichen, dass in den meistenImplementierungen standardmaßig nicht vom Punkt getroffen wird.

Beispiel

.and findet “Hand”, “Land”, “Band”, “Rand”, “Wand” etc.

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 15 / 39

Page 34: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Beliebige Zeichen

Beliebige Zeichen

Ein Punkt . deckt ein beliebiges Zeichen ab

Einzige Ausnahme ist das Newline-Zeichen, dass in den meistenImplementierungen standardmaßig nicht vom Punkt getroffen wird.

Beispiel

.and findet “Hand”, “Land”, “Band”, “Rand”, “Wand” etc.

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 15 / 39

Page 35: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Beliebige Zeichen

Beliebige Zeichen

Ein Punkt . deckt ein beliebiges Zeichen ab

Einzige Ausnahme ist das Newline-Zeichen, dass in den meistenImplementierungen standardmaßig nicht vom Punkt getroffen wird.

Beispiel

.and findet “Hand”, “Land”, “Band”, “Rand”, “Wand” etc.

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 15 / 39

Page 36: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 16 / 39

Page 37: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (1)

Eine Zeichenauswahl ist eine Liste von Zeichen, die in eckigeKlammern [ ] eingeschlossen notiert wird

Die Auswahl deckt genau ein Zeichen der Liste ab

Mit dem Bindestrich - konnen Zeichenbereiche in die Auswahlaufgenommen werden

Beispiele

[LHM][au]nd findet “Land”, “Hand”, “Hund”, “Mund”, etc.

[0-9a-fA-F] findet eine Ziffer in Hexadezimal-Schreibweise

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 17 / 39

Page 38: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (1)

Eine Zeichenauswahl ist eine Liste von Zeichen, die in eckigeKlammern [ ] eingeschlossen notiert wird

Die Auswahl deckt genau ein Zeichen der Liste ab

Mit dem Bindestrich - konnen Zeichenbereiche in die Auswahlaufgenommen werden

Beispiele

[LHM][au]nd findet “Land”, “Hand”, “Hund”, “Mund”, etc.

[0-9a-fA-F] findet eine Ziffer in Hexadezimal-Schreibweise

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 17 / 39

Page 39: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (1)

Eine Zeichenauswahl ist eine Liste von Zeichen, die in eckigeKlammern [ ] eingeschlossen notiert wird

Die Auswahl deckt genau ein Zeichen der Liste ab

Mit dem Bindestrich - konnen Zeichenbereiche in die Auswahlaufgenommen werden

Beispiele

[LHM][au]nd findet “Land”, “Hand”, “Hund”, “Mund”, etc.

[0-9a-fA-F] findet eine Ziffer in Hexadezimal-Schreibweise

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 17 / 39

Page 40: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (1)

Eine Zeichenauswahl ist eine Liste von Zeichen, die in eckigeKlammern [ ] eingeschlossen notiert wird

Die Auswahl deckt genau ein Zeichen der Liste ab

Mit dem Bindestrich - konnen Zeichenbereiche in die Auswahlaufgenommen werden

Beispiele

[LHM][au]nd findet “Land”, “Hand”, “Hund”, “Mund”, etc.

[0-9a-fA-F] findet eine Ziffer in Hexadezimal-Schreibweise

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 17 / 39

Page 41: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (2)

Beginnt die Auswahl mit einem Zirkumflex ^, so handelt es sich umeine negierte Auswahl, d.h. sie repasentiert alle Zeichen, die nicht inder Liste stehen

Soll die Auswahl das Zeichen ] selbst enthalten, muss dieses alserstes Zeichen der Liste notiert werden

Andere Metazeichen (inklusive \) verlieren innerhalb von Auswahlenihre Sonderbedeutung und mussen nicht maskiert werden

Beispiel

[^dwDW].. findet drei-buchstabige Worter, die nicht mit “d” oder “w”beginnen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 18 / 39

Page 42: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (2)

Beginnt die Auswahl mit einem Zirkumflex ^, so handelt es sich umeine negierte Auswahl, d.h. sie repasentiert alle Zeichen, die nicht inder Liste stehen

Soll die Auswahl das Zeichen ] selbst enthalten, muss dieses alserstes Zeichen der Liste notiert werden

Andere Metazeichen (inklusive \) verlieren innerhalb von Auswahlenihre Sonderbedeutung und mussen nicht maskiert werden

Beispiel

[^dwDW].. findet drei-buchstabige Worter, die nicht mit “d” oder “w”beginnen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 18 / 39

Page 43: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (2)

Beginnt die Auswahl mit einem Zirkumflex ^, so handelt es sich umeine negierte Auswahl, d.h. sie repasentiert alle Zeichen, die nicht inder Liste stehen

Soll die Auswahl das Zeichen ] selbst enthalten, muss dieses alserstes Zeichen der Liste notiert werden

Andere Metazeichen (inklusive \) verlieren innerhalb von Auswahlenihre Sonderbedeutung und mussen nicht maskiert werden

Beispiel

[^dwDW].. findet drei-buchstabige Worter, die nicht mit “d” oder “w”beginnen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 18 / 39

Page 44: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (2)

Beginnt die Auswahl mit einem Zirkumflex ^, so handelt es sich umeine negierte Auswahl, d.h. sie repasentiert alle Zeichen, die nicht inder Liste stehen

Soll die Auswahl das Zeichen ] selbst enthalten, muss dieses alserstes Zeichen der Liste notiert werden

Andere Metazeichen (inklusive \) verlieren innerhalb von Auswahlenihre Sonderbedeutung und mussen nicht maskiert werden

Beispiel

[^dwDW].. findet drei-buchstabige Worter, die nicht mit “d” oder “w”beginnen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 18 / 39

Page 45: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (3)

Fur einige Zeichenauswahlen existieren vordefinierte Zeichenklassen

Diese werden innerhalb von Zeichenauswahlen zwischen [: und :]notiert

Verfugbare Zeichenklassen

[:alnum:] Buchstaben & Ziffern [:blank:] Leerzeichen & Tabulator[:alpha:] Buchstaben [:space:] Jede Art von Leerzeichen[:lower:] Kleinbuchstaben [:punct:] Interpunktionszeichen[:upper:] Großbuchstaben [:print:] Alle druckbaren Zeichen[:digit:] Ziffern [:graph:] Druckbare, nicht-leere Zeichen[:xdigit:] Hexadezimal-Ziffern [:cntrl:] Kontrollzeichen

Der Vorteil von [[:alnum:]] gegenuber [a-zA-Z0-9] ist dieUnterstutzung von internationalen Zeichen je nachSystemeinstellung (Locale)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 19 / 39

Page 46: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (3)

Fur einige Zeichenauswahlen existieren vordefinierte Zeichenklassen

Diese werden innerhalb von Zeichenauswahlen zwischen [: und :]notiert

Verfugbare Zeichenklassen

[:alnum:] Buchstaben & Ziffern [:blank:] Leerzeichen & Tabulator[:alpha:] Buchstaben [:space:] Jede Art von Leerzeichen[:lower:] Kleinbuchstaben [:punct:] Interpunktionszeichen[:upper:] Großbuchstaben [:print:] Alle druckbaren Zeichen[:digit:] Ziffern [:graph:] Druckbare, nicht-leere Zeichen[:xdigit:] Hexadezimal-Ziffern [:cntrl:] Kontrollzeichen

Der Vorteil von [[:alnum:]] gegenuber [a-zA-Z0-9] ist dieUnterstutzung von internationalen Zeichen je nachSystemeinstellung (Locale)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 19 / 39

Page 47: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (3)

Fur einige Zeichenauswahlen existieren vordefinierte Zeichenklassen

Diese werden innerhalb von Zeichenauswahlen zwischen [: und :]notiert

Verfugbare Zeichenklassen

[:alnum:] Buchstaben & Ziffern [:blank:] Leerzeichen & Tabulator[:alpha:] Buchstaben [:space:] Jede Art von Leerzeichen[:lower:] Kleinbuchstaben [:punct:] Interpunktionszeichen[:upper:] Großbuchstaben [:print:] Alle druckbaren Zeichen[:digit:] Ziffern [:graph:] Druckbare, nicht-leere Zeichen[:xdigit:] Hexadezimal-Ziffern [:cntrl:] Kontrollzeichen

Der Vorteil von [[:alnum:]] gegenuber [a-zA-Z0-9] ist dieUnterstutzung von internationalen Zeichen je nachSystemeinstellung (Locale)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 19 / 39

Page 48: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Zeichenauswahlen

Zeichenauswahlen (3)

Fur einige Zeichenauswahlen existieren vordefinierte Zeichenklassen

Diese werden innerhalb von Zeichenauswahlen zwischen [: und :]notiert

Verfugbare Zeichenklassen

[:alnum:] Buchstaben & Ziffern [:blank:] Leerzeichen & Tabulator[:alpha:] Buchstaben [:space:] Jede Art von Leerzeichen[:lower:] Kleinbuchstaben [:punct:] Interpunktionszeichen[:upper:] Großbuchstaben [:print:] Alle druckbaren Zeichen[:digit:] Ziffern [:graph:] Druckbare, nicht-leere Zeichen[:xdigit:] Hexadezimal-Ziffern [:cntrl:] Kontrollzeichen

Der Vorteil von [[:alnum:]] gegenuber [a-zA-Z0-9] ist dieUnterstutzung von internationalen Zeichen je nachSystemeinstellung (Locale)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 19 / 39

Page 49: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Quantoren

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 20 / 39

Page 50: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Quantoren

Quantoren

Mit Quantoren kann angegeben werden, wie oft ein Elementvorkommen darf. bzw. muss

Quantoren werden unmittelbar nach dem Element notiert:{n} genau n Vorkommen{n,} mindestens n Vorkommen{n,m} mindestens n und hochstens m Vorkommen

Kurzformen:? Vorkommen optional (= {0,1})* beliebig viele Vorkommen (= {0,})+ mindestens ein Vorkommen (= {1,})

Beispiele

Go{2,}gle findet “Google” mit 2 oder mehr “o”

[:;]-?[][)(}{|]+ findet verschiedene Smileys ;-)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 21 / 39

Page 51: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Quantoren

Quantoren

Mit Quantoren kann angegeben werden, wie oft ein Elementvorkommen darf. bzw. muss

Quantoren werden unmittelbar nach dem Element notiert:{n} genau n Vorkommen{n,} mindestens n Vorkommen{n,m} mindestens n und hochstens m Vorkommen

Kurzformen:? Vorkommen optional (= {0,1})* beliebig viele Vorkommen (= {0,})+ mindestens ein Vorkommen (= {1,})

Beispiele

Go{2,}gle findet “Google” mit 2 oder mehr “o”

[:;]-?[][)(}{|]+ findet verschiedene Smileys ;-)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 21 / 39

Page 52: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Quantoren

Quantoren

Mit Quantoren kann angegeben werden, wie oft ein Elementvorkommen darf. bzw. muss

Quantoren werden unmittelbar nach dem Element notiert:{n} genau n Vorkommen{n,} mindestens n Vorkommen{n,m} mindestens n und hochstens m Vorkommen

Kurzformen:? Vorkommen optional (= {0,1})* beliebig viele Vorkommen (= {0,})+ mindestens ein Vorkommen (= {1,})

Beispiele

Go{2,}gle findet “Google” mit 2 oder mehr “o”

[:;]-?[][)(}{|]+ findet verschiedene Smileys ;-)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 21 / 39

Page 53: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Quantoren

Quantoren

Mit Quantoren kann angegeben werden, wie oft ein Elementvorkommen darf. bzw. muss

Quantoren werden unmittelbar nach dem Element notiert:{n} genau n Vorkommen{n,} mindestens n Vorkommen{n,m} mindestens n und hochstens m Vorkommen

Kurzformen:? Vorkommen optional (= {0,1})* beliebig viele Vorkommen (= {0,})+ mindestens ein Vorkommen (= {1,})

Beispiele

Go{2,}gle findet “Google” mit 2 oder mehr “o”

[:;]-?[][)(}{|]+ findet verschiedene Smileys ;-)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 21 / 39

Page 54: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Quantoren

Quantoren

Mit Quantoren kann angegeben werden, wie oft ein Elementvorkommen darf. bzw. muss

Quantoren werden unmittelbar nach dem Element notiert:{n} genau n Vorkommen{n,} mindestens n Vorkommen{n,m} mindestens n und hochstens m Vorkommen

Kurzformen:? Vorkommen optional (= {0,1})* beliebig viele Vorkommen (= {0,})+ mindestens ein Vorkommen (= {1,})

Beispiele

Go{2,}gle findet “Google” mit 2 oder mehr “o”

[:;]-?[][)(}{|]+ findet verschiedene Smileys ;-)

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 21 / 39

Page 55: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterausdrucke

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 22 / 39

Page 56: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterausdrucke

Unterausdrucke

Mit runden Klammern ( ) konnen beliebige Elemente zuUnterausdrucken (engl.: sub patterns) gruppiert werden

In vielen Anwendungen kann man mit der Notation \1, \2, . . . , \neinen Ruckbezug (engl.: back reference auf den vom i-tenUnterausdruck getroffenen Teilstring herstellen(BRE-spezifisch, wird jedoch auch von vielen ERE-Anwendungenunterstutzt)

Beispiel

([[:alpha:]]+)([[:blank:]]+\1)+ findet zwei oder mehr

hintereinander folgende Vorkommen eines Wortes

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 23 / 39

Page 57: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterausdrucke

Unterausdrucke

Mit runden Klammern ( ) konnen beliebige Elemente zuUnterausdrucken (engl.: sub patterns) gruppiert werden

In vielen Anwendungen kann man mit der Notation \1, \2, . . . , \neinen Ruckbezug (engl.: back reference auf den vom i-tenUnterausdruck getroffenen Teilstring herstellen(BRE-spezifisch, wird jedoch auch von vielen ERE-Anwendungenunterstutzt)

Beispiel

([[:alpha:]]+)([[:blank:]]+\1)+ findet zwei oder mehr

hintereinander folgende Vorkommen eines Wortes

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 23 / 39

Page 58: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterausdrucke

Unterausdrucke

Mit runden Klammern ( ) konnen beliebige Elemente zuUnterausdrucken (engl.: sub patterns) gruppiert werden

In vielen Anwendungen kann man mit der Notation \1, \2, . . . , \neinen Ruckbezug (engl.: back reference auf den vom i-tenUnterausdruck getroffenen Teilstring herstellen(BRE-spezifisch, wird jedoch auch von vielen ERE-Anwendungenunterstutzt)

Beispiel

([[:alpha:]]+)([[:blank:]]+\1)+ findet zwei oder mehr

hintereinander folgende Vorkommen eines Wortes

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 23 / 39

Page 59: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 24 / 39

Page 60: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Verschiedenes

Mit dem Pipe-Zeichen | lassen sich Alternativen (“oder”) notieren

Der Zirkumflex ˆ steht (außerhalb von Zeichenauswahlen) fur denZeilenanfang, das Dollar-Zeichen $ fur das Zeilenende

Viele Implementierungen (z.B. PCRE) weitere Funktionen undKurzschreibweisen, auf die hier nicht naher eingegangen wird

Beispiele

true|false findet “true” oder “false”

^[[:digit:]]+ findet Zahlen am Anfang einer Zeile

^$ findet eine leere Zeile

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 25 / 39

Page 61: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Verschiedenes

Mit dem Pipe-Zeichen | lassen sich Alternativen (“oder”) notieren

Der Zirkumflex ˆ steht (außerhalb von Zeichenauswahlen) fur denZeilenanfang, das Dollar-Zeichen $ fur das Zeilenende

Viele Implementierungen (z.B. PCRE) weitere Funktionen undKurzschreibweisen, auf die hier nicht naher eingegangen wird

Beispiele

true|false findet “true” oder “false”

^[[:digit:]]+ findet Zahlen am Anfang einer Zeile

^$ findet eine leere Zeile

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 25 / 39

Page 62: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Verschiedenes

Mit dem Pipe-Zeichen | lassen sich Alternativen (“oder”) notieren

Der Zirkumflex ˆ steht (außerhalb von Zeichenauswahlen) fur denZeilenanfang, das Dollar-Zeichen $ fur das Zeilenende

Viele Implementierungen (z.B. PCRE) weitere Funktionen undKurzschreibweisen, auf die hier nicht naher eingegangen wird

Beispiele

true|false findet “true” oder “false”

^[[:digit:]]+ findet Zahlen am Anfang einer Zeile

^$ findet eine leere Zeile

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 25 / 39

Page 63: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Verschiedenes

Mit dem Pipe-Zeichen | lassen sich Alternativen (“oder”) notieren

Der Zirkumflex ˆ steht (außerhalb von Zeichenauswahlen) fur denZeilenanfang, das Dollar-Zeichen $ fur das Zeilenende

Viele Implementierungen (z.B. PCRE) weitere Funktionen undKurzschreibweisen, auf die hier nicht naher eingegangen wird

Beispiele

true|false findet “true” oder “false”

^[[:digit:]]+ findet Zahlen am Anfang einer Zeile

^$ findet eine leere Zeile

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 25 / 39

Page 64: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Verschiedenes

Mit dem Pipe-Zeichen | lassen sich Alternativen (“oder”) notieren

Der Zirkumflex ˆ steht (außerhalb von Zeichenauswahlen) fur denZeilenanfang, das Dollar-Zeichen $ fur das Zeilenende

Viele Implementierungen (z.B. PCRE) weitere Funktionen undKurzschreibweisen, auf die hier nicht naher eingegangen wird

Beispiele

true|false findet “true” oder “false”

^[[:digit:]]+ findet Zahlen am Anfang einer Zeile

^$ findet eine leere Zeile

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 25 / 39

Page 65: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Verschiedenes

Verschiedenes

Mit dem Pipe-Zeichen | lassen sich Alternativen (“oder”) notieren

Der Zirkumflex ˆ steht (außerhalb von Zeichenauswahlen) fur denZeilenanfang, das Dollar-Zeichen $ fur das Zeilenende

Viele Implementierungen (z.B. PCRE) weitere Funktionen undKurzschreibweisen, auf die hier nicht naher eingegangen wird

Beispiele

true|false findet “true” oder “false”

^[[:digit:]]+ findet Zahlen am Anfang einer Zeile

^$ findet eine leere Zeile

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 25 / 39

Page 66: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterschiede zwischen BREs und EREs

Gliederung

1 Allgemeines

2 NotationZeichen und MetazeichenBeliebige ZeichenZeichenauswahlenQuantorenUnterausdruckeVerschiedenesUnterschiede zwischen BREs und EREs

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 26 / 39

Page 67: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterschiede zwischen BREs und EREs

Unterschiede zwischen BREs und EREs

Die Zeichen | + ? { } ( ) sind Literale, keine Metazeichen

Die Klammern fur Quantoren sind \{ \}, fur Unterausdrucke \( \)^ und $ sind nur am Anfang, bzw. am Ende des (Unter-)Ausdrucksmoglich, sonst werden sie als Literale interpretiert

Es gibt keine Notation fur Alternativen

Die Quantoren + und ? mussen in der allgemeinenQuantoren-Schreibweise als {1,} und {0,1} notiert werden

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 27 / 39

Page 68: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterschiede zwischen BREs und EREs

Unterschiede zwischen BREs und EREs

Die Zeichen | + ? { } ( ) sind Literale, keine Metazeichen

Die Klammern fur Quantoren sind \{ \}, fur Unterausdrucke \( \)

^ und $ sind nur am Anfang, bzw. am Ende des (Unter-)Ausdrucksmoglich, sonst werden sie als Literale interpretiert

Es gibt keine Notation fur Alternativen

Die Quantoren + und ? mussen in der allgemeinenQuantoren-Schreibweise als {1,} und {0,1} notiert werden

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 27 / 39

Page 69: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterschiede zwischen BREs und EREs

Unterschiede zwischen BREs und EREs

Die Zeichen | + ? { } ( ) sind Literale, keine Metazeichen

Die Klammern fur Quantoren sind \{ \}, fur Unterausdrucke \( \)^ und $ sind nur am Anfang, bzw. am Ende des (Unter-)Ausdrucksmoglich, sonst werden sie als Literale interpretiert

Es gibt keine Notation fur Alternativen

Die Quantoren + und ? mussen in der allgemeinenQuantoren-Schreibweise als {1,} und {0,1} notiert werden

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 27 / 39

Page 70: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterschiede zwischen BREs und EREs

Unterschiede zwischen BREs und EREs

Die Zeichen | + ? { } ( ) sind Literale, keine Metazeichen

Die Klammern fur Quantoren sind \{ \}, fur Unterausdrucke \( \)^ und $ sind nur am Anfang, bzw. am Ende des (Unter-)Ausdrucksmoglich, sonst werden sie als Literale interpretiert

Es gibt keine Notation fur Alternativen

Die Quantoren + und ? mussen in der allgemeinenQuantoren-Schreibweise als {1,} und {0,1} notiert werden

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 27 / 39

Page 71: Reguläre Ausdrücke - Proseminar UNIX Tools

Notation Unterschiede zwischen BREs und EREs

Unterschiede zwischen BREs und EREs

Die Zeichen | + ? { } ( ) sind Literale, keine Metazeichen

Die Klammern fur Quantoren sind \{ \}, fur Unterausdrucke \( \)^ und $ sind nur am Anfang, bzw. am Ende des (Unter-)Ausdrucksmoglich, sonst werden sie als Literale interpretiert

Es gibt keine Notation fur Alternativen

Die Quantoren + und ? mussen in der allgemeinenQuantoren-Schreibweise als {1,} und {0,1} notiert werden

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 27 / 39

Page 72: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele

Gliederung

1 Allgemeines

2 Notation

3 Anwendungsbeispiele

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 28 / 39

Page 73: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

Gliederung

1 Allgemeines

2 Notation

3 Anwendungsbeispielegrepsed

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 29 / 39

Page 74: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 75: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 76: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 77: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 78: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 79: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 80: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (1)

grep (von g/re/p) ist ein Programm zur Suche und Filterung vonText unter Verwendung von Regularen Ausdrucken

Es durchsucht Eingabedateien oder die Standardeingabe undschreibt jede Zeile mit Suchtreffern in die Standardausgabe

grep erlaubt BRE- und ERE-Notation (grep -E oder egrep)

In beiden Notierungsarten werden Back References unterstutzt

Einsatzgebiete

Sequentielles durchsuchen vieler Dateien

Filtern von Informationen, z.B. aus Logdateien

Im Zusammenspiel mit anderen UNIX-Tools, z.B. inShellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 30 / 39

Page 81: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (2)

Aufrufsyntax und Optionen (Ausschnitt)

[e]grep [OPTION] PATTERN [FILE]

-E Verwende EREs statt BREs (vgl. egrep)-o Nur tatsachliche Treffer statt ganzer Zeilen ausgeben-v Nur Zeilen ohne Treffer ausgeben-i Groß-/Kleinschreibung ignorieren-c Nur Anzahl der gefundenen Zeilen ausgeben-l Nur die Dateinamen mit Treffern zeigen-n Zusatzlich Zeilennummern ausgeben-s Unterdruckt Fehlermeldungen in der Ausgabe

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 31 / 39

Page 82: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (3)

Beispiele

grep -c ’\\begin{’ vortrag.texZahlt die Vorkommen von \begin{ in der Datei vortrag.tex

grep ’#.*$’ *liest alle Kommentare aus den Dateien im aktuellen Verzeichnis

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 32 / 39

Page 83: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele grep

grep (3)

Beispiele

grep -c ’\\begin{’ vortrag.texZahlt die Vorkommen von \begin{ in der Datei vortrag.tex

grep ’#.*$’ *liest alle Kommentare aus den Dateien im aktuellen Verzeichnis

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 32 / 39

Page 84: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

Gliederung

1 Allgemeines

2 Notation

3 Anwendungsbeispielegrepsed

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 33 / 39

Page 85: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 86: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 87: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den Eingabepuffer

Entscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 88: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollen

Fuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 89: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle aus

Kopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 90: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 91: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 92: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (1)

sed (stream editor) ist ein nicht-interaktiver, zeilenorientierterTexteditor

Arbeitsweise:

Lese die nachste Zeile der Eingabe in den EingabepufferEntscheide, welche Befehle fur diese Zeile ausgefuhrt werden sollenFuhre sukzessive alle Befehle ausKopiere die Zeile in die Standardausgabe (vgl. sed -n)

sed andert die Eingabedateien nicht. Um eine Ruckspeicherung zuerhalten, kann die Ausgabe mit > in die Datei zuruckgeschriebenwerden

Einsatzgebiete

Automatische, wiederkehrende Textmanipulationen

Oft in Zusammenspiel mit anderen Tools, z.B. in Shellprogrammen

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 34 / 39

Page 93: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (2)

Aufrufsyntax und Optionen

sed [-E] [-n] [-e COMMAND] [-f SCRIPT] [FILE]

-E Verwende EREs statt BREs-n Zeilenpuffer nicht implizit in die Ausgabe schreiben-e COMMAND Fuge den Befehl COMMAND der Befehlsliste hinzu-f SCRIPT Lese Befehle aus der Skript-Datei SCRIPT

Falls nur ein Befehlstext verwendet werden soll, kann -e weggelassenwerden

Jede Zeile eines Befehlsskripts kann einen Befehl enthalten

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 35 / 39

Page 94: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (2)

Aufrufsyntax und Optionen

sed [-E] [-n] [-e COMMAND] [-f SCRIPT] [FILE]

-E Verwende EREs statt BREs-n Zeilenpuffer nicht implizit in die Ausgabe schreiben-e COMMAND Fuge den Befehl COMMAND der Befehlsliste hinzu-f SCRIPT Lese Befehle aus der Skript-Datei SCRIPT

Falls nur ein Befehlstext verwendet werden soll, kann -e weggelassenwerden

Jede Zeile eines Befehlsskripts kann einen Befehl enthalten

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 35 / 39

Page 95: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (2)

Aufrufsyntax und Optionen

sed [-E] [-n] [-e COMMAND] [-f SCRIPT] [FILE]

-E Verwende EREs statt BREs-n Zeilenpuffer nicht implizit in die Ausgabe schreiben-e COMMAND Fuge den Befehl COMMAND der Befehlsliste hinzu-f SCRIPT Lese Befehle aus der Skript-Datei SCRIPT

Falls nur ein Befehlstext verwendet werden soll, kann -e weggelassenwerden

Jede Zeile eines Befehlsskripts kann einen Befehl enthalten

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 35 / 39

Page 96: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (3)

Aufbau eines sed-Befehls

[Startadresse [, Endadresse]] Funktion [Argumente]

Eine Adresse ist entweder

Eine Zeilennummer$ fur die letzte ZeileEin regularer Ausdruck der Form /RegExp/

Ohne Adresse wird der Befehl auf jede Zeile angewendet

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 36 / 39

Page 97: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (3)

Aufbau eines sed-Befehls

[Startadresse [, Endadresse]] Funktion [Argumente]

Eine Adresse ist entweder

Eine Zeilennummer$ fur die letzte ZeileEin regularer Ausdruck der Form /RegExp/

Ohne Adresse wird der Befehl auf jede Zeile angewendet

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 36 / 39

Page 98: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (3)

Aufbau eines sed-Befehls

[Startadresse [, Endadresse]] Funktion [Argumente]

Eine Adresse ist entweder

Eine Zeilennummer

$ fur die letzte ZeileEin regularer Ausdruck der Form /RegExp/

Ohne Adresse wird der Befehl auf jede Zeile angewendet

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 36 / 39

Page 99: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (3)

Aufbau eines sed-Befehls

[Startadresse [, Endadresse]] Funktion [Argumente]

Eine Adresse ist entweder

Eine Zeilennummer$ fur die letzte Zeile

Ein regularer Ausdruck der Form /RegExp/

Ohne Adresse wird der Befehl auf jede Zeile angewendet

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 36 / 39

Page 100: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (3)

Aufbau eines sed-Befehls

[Startadresse [, Endadresse]] Funktion [Argumente]

Eine Adresse ist entweder

Eine Zeilennummer$ fur die letzte ZeileEin regularer Ausdruck der Form /RegExp/

Ohne Adresse wird der Befehl auf jede Zeile angewendet

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 36 / 39

Page 101: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (3)

Aufbau eines sed-Befehls

[Startadresse [, Endadresse]] Funktion [Argumente]

Eine Adresse ist entweder

Eine Zeilennummer$ fur die letzte ZeileEin regularer Ausdruck der Form /RegExp/

Ohne Adresse wird der Befehl auf jede Zeile angewendet

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 36 / 39

Page 102: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (4)

Ausgewahlte Funktionen

p Zeile explizit ausgebend Zeile loschen (bzw. nicht ausgeben)q Scriptausfuhrung nach dieser Zeile beendens/re/str/[flags] Regularen Ausdruck re mit str ersetzen

(Back-References in str moglich)Ein gebrauchliches Flag ist g (global), dasmehrere Ersetzungen pro Zeile ermoglicht

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 37 / 39

Page 103: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (5)

Beispiele

ls /u/halle | sed -E ’s/(.*)/\[email protected]/’ > email.txtSpeichert eine Liste der E-Mail-Adressen der Recherhallen-Benutzer inder Datei email.txt

sed -n ’1,3p’ email.txtGibt die ersten drei Zeilen von email.txt aus

sed ’/^$/d’ textLoscht leere Zeilen aus dem Text

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 38 / 39

Page 104: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (5)

Beispiele

ls /u/halle | sed -E ’s/(.*)/\[email protected]/’ > email.txtSpeichert eine Liste der E-Mail-Adressen der Recherhallen-Benutzer inder Datei email.txt

sed -n ’1,3p’ email.txtGibt die ersten drei Zeilen von email.txt aus

sed ’/^$/d’ textLoscht leere Zeilen aus dem Text

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 38 / 39

Page 105: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

sed (5)

Beispiele

ls /u/halle | sed -E ’s/(.*)/\[email protected]/’ > email.txtSpeichert eine Liste der E-Mail-Adressen der Recherhallen-Benutzer inder Datei email.txt

sed -n ’1,3p’ email.txtGibt die ersten drei Zeilen von email.txt aus

sed ’/^$/d’ textLoscht leere Zeilen aus dem Text

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 38 / 39

Page 106: Reguläre Ausdrücke - Proseminar UNIX Tools

Anwendungsbeispiele sed

Vielen Dank!

Vielen Dank fur die Aufmerksamkeit!

Ferdinand Beyer (TUM) Regulare Ausdrucke 08.11.2005 39 / 39