Vortrag Regular Expressions

Aus GNU/Linux User Group Kaiserslautern

Version vom 21:25, 22. Mai 2007 von Sbahl (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Exkurs bzgl.

Frage zum tar-Befehl:

Was passiert mit tar-ball beim auspacken, wenn Benutzer nicht im System existieren, denen im tar-Ball die Dateien zugeordnet sind?

Sascha sagt Dateien werden mit ids erzeugt, denen jedoch keine User im System zugeordnet sind.

tar

  tar [OPTION]... [DATEI]...
      -t, --list
             Inhalt eines Archivs anzeigen
      -x, --extract, --get
             Dateien aus Archiv holen
      -c, --create
             neues Archiv erzeugen
      -p, --same-permissions
             Zugriffsrechte beim Auspacken erhalten
      -l, --one-file-system
             beim Erzeugen Dateisystem nicht wechseln
      -f, --file=ARCHIV
          Gerät oder Datei ARCHIV benutzen


Mit dem Befehl

tar cplf dateisystem_dev_hda2.tar

wird ein tar-Ball erzeugt (c), das den Dateien die gleichen Rechten erhält (p), der tar-Befehl bleibt in dem aktullem Dateisystem, und betrifft z.B. keine gemounteten Dateisysteme (l) und schreibt es in den tar-Ball mit dem Namen hda2.tar (f).

Sehr cooler Befehl zum Kopieren von ganzen Dateisystemen

cd /mnt/ && ( cd / && tar cplf - . ) | tar xpvf - 

Reguläre Ausdrücke

Manual page als Lektüre:

man perlre
man sed


Aufgabe:

Wir haben eine Dateieingabe der folgenden Form:

^ Bereich_0  \t Bereich_1 \t Bereich_2 \t Bereich_3 \t Bereich_4 $

und möchten diese in folgende HTML-Form überführen:

<tr><td>Bereich_0</td><td>Bereich_1</td></tr>
<tr><td>Bereich_2</td><td>Bereich_3</td><td>Bereich_4</td></tr>


Struktur unseres Dateiinputs

^ Bereich_1  \t Bereich_2 \t Bereich_3 \t Bereich_4 \t Bereich_5 \t B_6 \t B_7 $
^ DE         \t Name      \t Tag       \t Monat     \t Jahr      \t 0   \t 0   $

1. Schritt

 echo "" > /var/www/cms/index_2.html &&

==== 2. Schritt ====
  cat tmp0_holidays.DE.csv 
  sed -e 's/\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\)/
  \\\2\<\/td\>\\3.\4.\5\<\/td\>\<\/tr\>/' 
  >> /var/www/cms/index_2.html & & 
==== 3. Schritt ====

 echo "
" >> /var/www/cms/index_2.html


Ergebnis:

Die Schritte zusammen ergeben folgende Ausgabe:

| Name | Datum (Tag.Monat.Jahr) | 
<tr><td>Bereich_1</td><td>Bereich_2</td><td>Bereich_3.Bereich_4.Bereich_5</td></tr>
<tr><td>  \1     </td><td>    \2   </td><td>    \3   .   \4    .    \5   </td></tr>


1. Schritt

echo "" > /var/www/cms/index.html &&


==== 2. Schritt ====

 cat tmp0_holidays.DE.csv
 sed -e 's/;/\<\/td\>\/g' 
 sed -e 's/^/\\/' 
 sed -e 's/$/\<\/td\>\<\/tr\>/' 
 >> /var/www/cms/index.html && 

'''ergibt'''
 DE;Rosenmontag;19;2;2007;0;0 

      

==== 3. Schritt ====

 echo "
DE Rosenmontag 19 2 2007 0 0
" >> /var/www/cms/index.html


Ergibt folgende Tabellenausgabe:

 | DE    | Name | Tag | Monat | Jahr | 0 | 0 |
Persönliche Werkzeuge