Suchen und Ersetzen

Neben dem Auffinden von Zeichenketten unterstützen reguläre Ausdrücke auch das Ersetzen sowie Translationen, also buchstabenweise Ersetzungen.

Eine Aufgabe von Autoren redaktioneller Beiträge besteht darin, auf eine einheitliche Schreibweise von Begriffen und Abkürzungen zu achten. Per Hand verursacht das einigen Aufwand, komfortabler funktionierte es per Regex. Um etwa alle Vorkommnisse des Begriffes Wifi durch WLAN zu ersetzen, reicht folgende Zeile in Perl:

$string =~ s/Wifi/WLAN/g;

Mit dem Kommando sed wenden Sie die Ersetzung komfortabel auf eine komplette Datei an:

$ sed --quiet "s/Wifi/WLAN/g; w kopie.txt" original.txt

Die Option --quiet unterdrückt dabei Ausgaben auf der Standardausgabe. Der zweite Parameter enthält durch ein Semikolon getrennte Kommandos an Sed. Beim ersten davon handelt es sich um einen regulären Ausdruck zur Textersetzung. Dabei steht das das Kürzel g am Ende des Regex für "global" und sorgt für eine Ersetzung aller Suchtreffer (Wifi), die in der Datei original.txt vorkommen. Den korrigierten Text speichert Sed anschließend mittels des zweiten Kommandos (w für "write") in der Datei kopie.txt, das Originaldokument bleibt unverändert.

Translationen gelingen in Perl mit tr anstelle von s. Um beispielsweise alle Kleinbuchstaben durch Großbuchstaben zu ersetzen, genügt folgender Aufruf:

$string =~ tr/[a-z]/[A-Z]/;

Bei Sed heißt das entsprechende Kommando y und kann nicht nur einzelne Buchstaben, sondern auch ganze Zeichenketten gleicher Länge ersetzen.

Fazit

Reguläre Ausdrücke helfen dabei, komplizierte Aufgaben bei der Verarbeitung von Zeichensequenzen wesentlich zu vereinfachen. Mit vergleichsweise wenig Aufwand lassen sich eine Textsuche und Ersetzung realisieren. Ein tieferes Verständnis dieser Materie vermittelt das als Standardwerk zum Thema geltende "Mastering Regular Expressions" von Jeffrey E.F. Friedl [6]. Daneben eignet sich "Sed und Awk" von Dale Dougherty und Arnold Robbins [7] als weiterer, höchst informativer Lesestoff. 

Glossar

POSIX

Portable Operating System Interface for Unix (DIN/EN/ISO/IEC 9945, [8]). Eine von der IEEE definierte Familie von Interoperabilitätsstandards für Application Programming Interfaces (APIs) und Software-Tools. POSIX ist prinzipiell nicht auf unixoide Systemen beschränkt; so unterstützt beispielsweise auch die Windows-NT-Systemfamilie POSIX bis zu einem gewissen Grad.

ICANN

Internet Corporation for Assigned Names and Numbers. Die 1998 gegründete Organisation entscheidet unter anderem über die Grundlagen der Verwaltung der Top-Level-Domains (.com, .net, .org, .de, …) im Internet [9].

Infos

[1] Häufigste Nachnamen in Deutschland: http://de.wikipedia.org/wiki/Liste_der_häufigsten_Familiennamen_in_Deutschland

[2] "Python Regular Expression HOWTO": http://docs.python.org/howto/regex.html

[3] Modul re (Python): http://docs.python.org/library/re.html

[4] "Perl Regular Expressions": http://www.troubleshooters.com/codecorn/littperl/perlreg.htm

[5] "How to Find or Validate an Email Address": http://www.regular-expressions.info

[6] Regex von A bis Z: Jeffrey E.F. Friedl, "Mastering Regular Expressions", O'Reilly 1996, ISBN 978-0596528126

[7] Regex in Sed und Awk: Dale Dougherty und Arnold Robbins, "Sed und Awk", O'Reilly 1997, ISBN 1-56592-225-5

[8] POSIX-Standard: http://standards.ieee.org/develop/wg/POSIX.html

[9] ICANN: http://www.icann.org/en/tlds/

Der Autor

Frank Hofmann hat Informatik an der TU Chemnitz studiert. Derzeit arbeitet er in Berlin im Open-Source-Expertennetzwerk Büro 2.0 als Dienstleister mit Spezialisierung auf Druck und Satz. Er gehört zur Linux User Group Potsdam (upLUG).

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Schnipseljagd
    Computer erleichtern die Arbeit – sofern man ihnen genau sagt, was sie tun sollen. Mit regulären Ausdrücken beschleunigen Sie das Suchen und Ersetzen von Zeichenketten auf elegante Art.
  • Einfaches Erstellen von regulären Ausdrücken
    Wo reguläre Ausdrücke für den Profi ein Denksport sind, steht der Anfänger verzweifelt vor einem Dickicht an Kürzeln und Zeichen. Für den Durchblick sorgt der Editor txt2regex.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
  • Teil 3: String-Verarbeitung und Reguläre Ausdrücke
    Die Grundlagen der Zeichenketten haben wir in der letzten Ausgabe gelegt. Diesmal wollen wir uns aber nicht mit einfachen Leer-Tests oder Längenanzeigen begnügen, sondern unsere Strings kräftig durcheinander wirbeln.
  • Am Fließband
    Mit Sed editieren Sie Textdaten ohne interaktive Benutzeroberfläche – auch in Pipes oder der Eingabeumlenkung. In einer einzigen Zeile lassen sich umfangreiche Editierkommandos absetzen.
Kommentare

Infos zur Publikation

LU 10/2016: Kryptographie

Digitale Ausgabe: Preis € 0,00
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

zweites Bildschirm auf gleichem PC einrichten
H A, 30.09.2016 19:16, 2 Antworten
Hallo, ich habe Probleme mein zweites Bildschirm einzurichten.(Auf Debian Jessie mit Gnome) Ich...
Probleme mit MPC/MPD
Matthias Göhlen, 27.09.2016 13:39, 2 Antworten
Habe gerade mein erstes Raspi Projekt angefangen, typisches Einsteigerding: Vom Raspi 3B zum Radi...
Soundkarte wird erkannt, aber kein Ton
H A, 25.09.2016 01:37, 6 Antworten
Hallo, Ich weiß, dass es zu diesem Thema sehr oft Fragen gestellt wurden. Aber da ich ein Linu...
Scannen nur schwarz-weiß möglich
Werner Hahn, 20.09.2016 13:21, 2 Antworten
Canon Pixma MG5450S, Dell Latitude E6510, Betriebssyteme Ubuntu 16.04 und Windows 7. Der Canon-D...
Meteorit NB-7 startet nicht
Thomas Helbig, 13.09.2016 02:03, 4 Antworten
Verehrte Community Ich habe vor Kurzem einen Netbook-Oldie geschenkt bekommen. Beim Start ersch...