Vortrag Regular Expressions

Aus GNU/Linux User Group Kaiserslautern

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Version vom 14:03, 31. Mai 2007 (bearbeiten)
Erinnern (Diskussion | Beiträge)
(2. Schritt)
← 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 3 dazwischen liegende Versionen mit ein.)
Zeile 25: 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:
- \<t r\>\<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! 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!
Zeile 37: Zeile 40:
==== 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 52: 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 |
Persönliche Werkzeuge