<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.bralug.de/wiki-common/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>http://wiki.bralug.de/index.php?action=history&amp;feed=atom&amp;title=Regul%C3%A4re_Ausdr%C3%BCcke_in_Beispielen</id>
		<title>Reguläre Ausdrücke in Beispielen - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.bralug.de/index.php?action=history&amp;feed=atom&amp;title=Regul%C3%A4re_Ausdr%C3%BCcke_in_Beispielen"/>
		<link rel="alternate" type="text/html" href="http://wiki.bralug.de/index.php?title=Regul%C3%A4re_Ausdr%C3%BCcke_in_Beispielen&amp;action=history"/>
		<updated>2026-04-04T05:54:59Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in BraLUG-Wiki</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://wiki.bralug.de/index.php?title=Regul%C3%A4re_Ausdr%C3%BCcke_in_Beispielen&amp;diff=4982&amp;oldid=prev</id>
		<title>MaD: Meine &quot;Folien&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.bralug.de/index.php?title=Regul%C3%A4re_Ausdr%C3%BCcke_in_Beispielen&amp;diff=4982&amp;oldid=prev"/>
				<updated>2007-02-01T22:11:12Z</updated>
		
		<summary type="html">&lt;p&gt;Meine &amp;quot;Folien&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategorie:Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
##&lt;br /&gt;
##&lt;br /&gt;
##  &lt;br /&gt;
##                                ::,,::                                  &lt;br /&gt;
##                              ::,,,,;;,,                                &lt;br /&gt;
##  GGKKKKDD;;                ::::      ;;;;KKLL  LLKK..iiKKtt  ;;DDWWWWjj&lt;br /&gt;
##  WW##WW##KK              ::::        ;;ii##DD  DD##..tt##LL;;######WWLL&lt;br /&gt;
##  WW##;;KKWW  ;;WWGG    ::::          ;;;;##DD  DD##..tt##LLGG##LL      &lt;br /&gt;
##  WW##DD##WW..DD##tt  ::::            ,,;;##DD  DD##..tt##LLKK##..ii##LL&lt;br /&gt;
##  WW##  LL##jjKKKK  ::::              ,,;;##DD  DD##..tt##LLGG##ttii##LL&lt;br /&gt;
##  WW##LL####iiKKKK  ,,                ,,..####ttLL##KKWW##iiii####WW##LL&lt;br /&gt;
##  KKWWGGWWLL  EEEE,,::                ,,  ttWWLL..GG####ff    iiKK####ff&lt;br /&gt;
##                  ::::::::            ,,            ..            ....  &lt;br /&gt;
##                      ::::,,          ,,;;LLttttffttttttjj;;            &lt;br /&gt;
##                          ,,    ,,,,::,,::iiii;;ii;;;;tttt;;::::ii      &lt;br /&gt;
##                          ::::,,::::,,  ..iiiiiiiiii;;ttiittiiiiii      &lt;br /&gt;
##                            ::                                          &lt;br /&gt;
##&lt;br /&gt;
##  Reguläre Ausdrücke in Beispielen&lt;br /&gt;
##  &amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
##  Markus Dahms &amp;lt;mad@automagically.de&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
##############################################################################&lt;br /&gt;
##&lt;br /&gt;
## Übersicht:&lt;br /&gt;
## &lt;br /&gt;
&lt;br /&gt;
# * Unterschiede &amp;quot;basic&amp;quot;-/&amp;quot;extended&amp;quot;-RegExp&lt;br /&gt;
#     * &amp;quot;basic&amp;quot;: &amp;quot;\(&amp;quot;, &amp;quot;\)&amp;quot;, teilweise:  &amp;quot;\{&amp;quot;, &amp;quot;\}&amp;quot;, &amp;quot;\+&amp;quot;&lt;br /&gt;
#     * &amp;quot;extended&amp;quot;: &amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;, &amp;quot;{&amp;quot;, &amp;quot;}&amp;quot;&lt;br /&gt;
# * Verarbeitung erfolgt im Normalfall zeilenorientiert&lt;br /&gt;
# * Überblick&lt;br /&gt;
#     * spezielle Zeichen:&lt;br /&gt;
#         .         beliebiges Zeichen außer Newline&lt;br /&gt;
#         *         beliebige Anzahl des Zeiches oder der Gruppe davor&lt;br /&gt;
#         +         ein oder mehr Vorkommen        -||-&lt;br /&gt;
#         ?         ein oder kein Vorkommen        -||-&lt;br /&gt;
#         {n,m}     n bis m Vorkommen              -||-&lt;br /&gt;
#         {n}       n Vorkommen                    -||-&lt;br /&gt;
#         {n,}      n oder mehr Vorkommen          -||-&lt;br /&gt;
#         ^         Anfang der Zeile bzw. Negation bei &amp;quot;[&amp;quot;/&amp;quot;]&amp;quot;&lt;br /&gt;
#         $         Ende der Zeile&lt;br /&gt;
#         [ ]       eins der eingeschlossenen Zeichen&lt;br /&gt;
#         ( )       Gruppierung&lt;br /&gt;
#         |         das davor oder danach muss passen&lt;br /&gt;
#         \n        n-te Gruppe muss so wieder auftauchen&lt;br /&gt;
#         \         Spezialbedeutung des nächsten Zeichens unterbinden&lt;br /&gt;
#     * POSIX-Zeichenklassen ([:klasse:])&lt;br /&gt;
#         * alnum, alpha, blank, cntrl, digit, graph, lower, print, space&lt;br /&gt;
#           upper, xdigit&lt;br /&gt;
&lt;br /&gt;
##############################################################################&lt;br /&gt;
##&lt;br /&gt;
## Suchen (egrep)&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
# * &amp;quot;grep&amp;quot; sucht nach Mustern in Dateien&lt;br /&gt;
# * wichtige Optionen (für GNU grep)&lt;br /&gt;
#     * -e          sucht nach &amp;quot;basic&amp;quot;-RegExp&lt;br /&gt;
#     * -E          sucht nach &amp;quot;extended&amp;quot;-RegExp (enspricht &amp;quot;egrep&amp;quot;)&lt;br /&gt;
#     * -v          invertiert das Ergebnis&lt;br /&gt;
#     * -q          keine Ausgabe, Rückgabewert entscheidend&lt;br /&gt;
#     * -r          rekursive Suche&lt;br /&gt;
#     * --color     farbliche Markierung (nicht ganz fehlerfrei)&lt;br /&gt;
&lt;br /&gt;
# Jedes Vorkommen von &amp;quot;FIXME&amp;quot; oder &amp;quot;TODO&amp;quot; in allen C-Dateien anzeigen&lt;br /&gt;
&lt;br /&gt;
egrep '(FIXME|TODO)' *.c&lt;br /&gt;
&lt;br /&gt;
# Alle Kommentarzeilen und Leerzeilen einer (Shellscript-)Datei entsorgen&lt;br /&gt;
&lt;br /&gt;
egrep -v '^(#|$)' examples.sh&lt;br /&gt;
&lt;br /&gt;
# Alle Header-Zeilen aus einer Mailbox&lt;br /&gt;
&lt;br /&gt;
egrep '^[A-Z][[:alnum:]-]*: ' mbox&lt;br /&gt;
&lt;br /&gt;
# Beispiel vom Scripting-Workshop: Alle Zeilen rausfischen, die mit einem&lt;br /&gt;
# &amp;quot;r&amp;quot; und mindestens einer Ziffer anfangen&lt;br /&gt;
&lt;br /&gt;
svn log -r 1:HEAD --incremental | \&lt;br /&gt;
	egrep '^r[[:digit:]]+ ' | \&lt;br /&gt;
	cut -d\| -f 2 | \&lt;br /&gt;
	sort | \&lt;br /&gt;
	uniq -c | \&lt;br /&gt;
	sort -nr&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Aufgaben:&lt;br /&gt;
#&lt;br /&gt;
# * aus der Ausgabe von &amp;quot;dmesg&amp;quot; die Zeilen heraussuchen, die mit&lt;br /&gt;
#   &amp;quot;hd*:&amp;quot; oder &amp;quot;sd*:&amp;quot; anfangen, z.B.:&lt;br /&gt;
#      sda: assuming drive cache: write through&lt;br /&gt;
#      hda: cache flushes supported&lt;br /&gt;
#      hdc: media error (bad sector): error=0x30 { LastFailedSense=0x03 }&lt;br /&gt;
#&lt;br /&gt;
# * &amp;quot;dmesg&amp;quot;-Ausgabe nach Fehlern durchsuchen&lt;br /&gt;
#   (error, failure, failed, oops...)&lt;br /&gt;
#&lt;br /&gt;
# * Alle von der &amp;quot;bash&amp;quot; gesetzten Umgebungsvariablen anzeigen, die&lt;br /&gt;
#   ein Array sind (z.B. BASH_ARGV=(), aber nicht BASH=/bin/bash;&lt;br /&gt;
#   set | egrep '...')&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
##############################################################################&lt;br /&gt;
##&lt;br /&gt;
## Suchen und Ersetzen (sed)&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
# * sed: stream editor&lt;br /&gt;
# * eigene kleine Skriptsprache&lt;br /&gt;
# * meistgenutztes Konstrukt: &amp;quot;sed -e 's/muster/ersatz/'&amp;quot;&lt;br /&gt;
#   (entspricht ungefähr &amp;quot;perl -e 'while(&amp;lt;&amp;gt;){s/muster/ersatz/;print}'&amp;quot;)&lt;br /&gt;
# * kann auch suchen: &amp;quot;sed -e '/muster/p;d'&amp;quot;&lt;br /&gt;
# * wichtige Optionen&lt;br /&gt;
#     * -e         angegebenes Skript verarbeiten&lt;br /&gt;
#     * -i         Dateien direkt bearbeiten, keine Ausgabe auf stdout&lt;br /&gt;
#     * -r         &amp;quot;extended&amp;quot;-RegExp, Standard ist &amp;quot;basic&amp;quot;&lt;br /&gt;
#     * -f         Skript aus Datei laden&lt;br /&gt;
&lt;br /&gt;
# konvertiere alle GIF-Dateien in JPEG-Dateien&lt;br /&gt;
&lt;br /&gt;
IFS=$'\n'&lt;br /&gt;
for file in `ls -1 *.gif`; do&lt;br /&gt;
	convert &amp;quot;$file&amp;quot; &amp;quot;`echo $file | sed -e 's/\.gif$/.png/'`&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Whitespace-Zeichen am Zeilenanfang und Ende entfernen&lt;br /&gt;
&lt;br /&gt;
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' &amp;lt; Eingabe.txt &amp;gt; Ausgabe.txt&lt;br /&gt;
&lt;br /&gt;
# E-Mail-Adressen verstecken (längere TLDs als .info oder .name?)&lt;br /&gt;
&lt;br /&gt;
sed -r \&lt;br /&gt;
	-e 's/[[:alnum:]_.-]+@[[:alnum:]_.-]+\.[[:alpha:]]{2,4}/VERSTECKT/g' \&lt;br /&gt;
	&amp;lt; mbox | grep VERSTECKT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Aufgaben:&lt;br /&gt;
#&lt;br /&gt;
# * Tags aus einer HTML-Datei entsorgen&lt;br /&gt;
#&lt;br /&gt;
# * allen Nutzern aus der /etc/passwd, die /bin/false als Shell haben,&lt;br /&gt;
#   /tmp/home/$NUTZERNAME als Home-Verzeichnis zuweisen (in eine andere&lt;br /&gt;
#   Datei als /etc/passwd schreiben ;-)&lt;br /&gt;
#&lt;br /&gt;
# * in einem Dateinamen (Variable) alle Zeichen, die nicht Buchstaben,&lt;br /&gt;
#   Zahlen oder erlaubte Sonderzeichen sind (&amp;quot;.&amp;quot;, &amp;quot;-&amp;quot;, &amp;quot;%&amp;quot;) sind, durch&lt;br /&gt;
#   Unterstrich ersetzen (&amp;quot;_&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
##############################################################################&lt;br /&gt;
##&lt;br /&gt;
## mögliche Lösungen:&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
# egrep:&lt;br /&gt;
&lt;br /&gt;
dmesg | egrep '^(sd|hd)[a-z]:'&lt;br /&gt;
&lt;br /&gt;
dmesg | egrep -i '(error|fail(ure|ed)|oops)'&lt;br /&gt;
&lt;br /&gt;
set | egrep '^BASH[[:upper:]_]*=\('&lt;br /&gt;
&lt;br /&gt;
# sed:&lt;br /&gt;
&lt;br /&gt;
sed -e 's/&amp;lt;[^&amp;gt;]*&amp;gt;//g' &amp;lt; /etc/firefox/profile/bookmarks.html&lt;br /&gt;
&lt;br /&gt;
sed -r \&lt;br /&gt;
	-e 's#^([^:]+)(:.*:)([^:]+):/bin/false$#\1\2/tmp/home/\1:/bin/false#' \&lt;br /&gt;
	&amp;lt; /etc/passwd&lt;br /&gt;
&lt;br /&gt;
echo $bla | sed -e 's/[^[:alnum:]%-]/_/g'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>MaD</name></author>	</entry>

	</feed>