Vortrag Regular Expressions
Aus GNU/Linux User Group Kaiserslautern
(Unterschied zwischen Versionen)
| Version vom 21:25, 22. Mai 2007 (bearbeiten) Sbahl (Diskussion | Beiträge) (Überarbeitung läuft nocht) ← Zum vorherigen Versionsunterschied |
Aktuelle Version (14:12, 31. Mai 2007) (bearbeiten) (rückgängig) Erinnern (Diskussion | Beiträge) (→Reguläre Ausdrücke) |
||
| (Der Versionsvergleich bezieht 5 dazwischen liegende Versionen mit ein.) | |||
| Zeile 1: | Zeile 1: | ||
| - | == 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 == | == Reguläre Ausdrücke == | ||
| Zeile 58: | Zeile 25: | ||
| ==== 1. Schritt ==== | ==== 1. Schritt ==== | ||
| - | echo "<html><body><table border=1>" > /var/www/cms/index_2.html && | + | <nowiki>echo "<html><body><table border=1>" > /var/www/cms/index_2.html &&</nowiki> |
| ==== 2. Schritt ==== | ==== 2. Schritt ==== | ||
| - | cat tmp0_holidays.DE.csv | + | |
| - | sed -e 's/\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\)/ | + | im Folgenden der Befehl, mit kleinen Umbrüchen, denn ansonsten schreibt man es hintereinander, was hier zugunsten der besseren Lesbarkeit anders gelöst wurde: |
| - | \<tr\>\<td\>\2\<\/td\>\<td\>\3.\4.\5\<\/td\>\<\/tr\>/' | + | |
| - | >> /var/www/cms/index_2.html & & | + | <nowiki>cat tmp0_holidays.DE.csv |</nowiki> |
| + | <nowiki>sed -e 's/\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\)/</nowiki> | ||
| + | <nowiki>\<tr\>\<td\>\2\<\/td\>\<td\>\3.\4.\5\<\/td\>\<\/tr\>/'</nowiki> | ||
| + | <nowiki>>> /var/www/cms/index_2.html &&</nowiki> | ||
| + | |||
| + | Oben muss aufgrund welcher Umstände auch immer das erste 'tr' in der 3.Zeile von oben natürlich zusammengeschrieben werden. Nur leider interprtiert unser Wiki das dann leider als Tabelle ;) Ihr seid sicher so klever das hinzukriegen! | ||
| + | |||
| ==== 3. Schritt ==== | ==== 3. Schritt ==== | ||
| - | echo "</table></body></html>" >> /var/www/cms/index_2.html | + | echo <nowiki>" </table></body></html>" >> /var/www/cms/index_2.html</nowiki> |
| - | + | ||
| === Ergebnis: === | === Ergebnis: === | ||
| Zeile 82: | Zeile 54: | ||
| ==== 1. Schritt ==== | ==== 1. Schritt ==== | ||
| - | echo "<html><body><table border=1>" > /var/www/cms/index.html && | + | echo <nowiki>"<html><body><table border=1>" > /var/www/cms/index.html &&</nowiki> |
| - | + | ||
| ==== 2. Schritt ==== | ==== 2. Schritt ==== | ||
Aktuelle Version
Inhaltsverzeichnis |
[bearbeiten] Reguläre Ausdrücke
Manual page als Lektüre:
man perlre man sed
[bearbeiten] 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 $
[bearbeiten] 1. Schritt
echo "<html><body><table border=1>" > /var/www/cms/index_2.html &&
[bearbeiten] 2. Schritt
im Folgenden der Befehl, mit kleinen Umbrüchen, denn ansonsten schreibt man es hintereinander, was hier zugunsten der besseren Lesbarkeit anders gelöst wurde:
cat tmp0_holidays.DE.csv | sed -e 's/\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\);\(.*\)/ \<tr\>\<td\>\2\<\/td\>\<td\>\3.\4.\5\<\/td\>\<\/tr\>/' >> /var/www/cms/index_2.html &&
Oben muss aufgrund welcher Umstände auch immer das erste 'tr' in der 3.Zeile von oben natürlich zusammengeschrieben werden. Nur leider interprtiert unser Wiki das dann leider als Tabelle ;) Ihr seid sicher so klever das hinzukriegen!
[bearbeiten] 3. Schritt
echo " </table></body></html>" >> /var/www/cms/index_2.html
[bearbeiten] 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>
[bearbeiten] 1. Schritt
echo "<html><body><table border=1>" > /var/www/cms/index.html &&
[bearbeiten] 2. Schritt
cat tmp0_holidays.DE.csv sed -e 's/;/\<\/td\>\<td\>/g' sed -e 's/^/\<tr\>\<td\>/' sed -e 's/$/\<\/td\>\<\/tr\>/' >> /var/www/cms/index.html &&
ergibt
DE;Rosenmontag;19;2;2007;0;0
<tr>
<td>DE</td>
<td>Rosenmontag</td>
<td>19</td>
<td>2</td>
<td>2007</td>
<td>0</td>
<td>0</td>
</tr>
[bearbeiten] 3. Schritt
echo "</table></body></html>" >> /var/www/cms/index.html
Ergibt folgende Tabellenausgabe:
| DE | Name | Tag | Monat | Jahr | 0 | 0 |

