ubuntuusers.de

Mit sed (?) ein Zitat von HTML- zu DOKUWIKI-Format ändern

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

paulheinz

Anmeldungsdatum:
7. Januar 2019

Beiträge: 35

Wohnort: Rostock

Ich sitzte auf'm Schlauch!

Folgender Block ist gegeben:

1
2
3
4
5
<blockquote class="rte__textbox-blockquote">
<p>"Es gibt nur ein Ziel, keinen Weg. Was wir Weg nennen, ist Zögern."</p>

<cite>Franz Kafka: "Handschrift 17" in "Zur Frage der Gesetzte und andere Handschriften". Frankfurt: Fischer Taschenbuch Verlag 2008. Seite 146.</cite>
</blockquote>

Er soll, wie folgt geändert werden (Format für DokuWiki):

1
2
3
4
5
6
7
<WRAP justify>
>  //"Es gibt nur ein Ziel, keinen Weg. Was wir Weg nennen, ist Zögern."//
</WRAP>

<WRAP rightalign>
Franz Kafka: //"Handschrift 17"// in //"Zur Frage der Gesetzte und andere Handschriften".// Frankfurt: Fischer Taschenbuch Verlag 2008. Seite 146.
</WRAP>

Schon jetzt vielen Dank für die Hilfe.

Bearbeitet von rklm:

Syntaxhighlighting

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

das ist nicht trvial, weil du ja das HTML parsen musst, die Klasse des Elements berücksichtigen musst, um die Zielformatierung hinzubekommen, eine neue XML (oder so was in der Art?) Datei schreiben muss und im Zielformat auch noch die Formatierung von Wörtern (z.B. ""Handschrift 17" kursiv - ist im HTML so nicht formatiert) ändern willst.

Mit sed kommt du da IMHO nicht weit. Zumal mal HTML / XML besser mit einem HTML / XML Parser liest als sich da irgendwie mit regulären Ausdrücken versucht.

Kannst du in irgendeiner Form sonst eine Programmiersprache?

Gruß, noisefloor

paulheinz

(Themenstarter)

Anmeldungsdatum:
7. Januar 2019

Beiträge: 35

Wohnort: Rostock

Kannst du in irgendeiner Form sonst eine Programmiersprache?

Hallo noisefloor,

leider nein, nur ein paar Grundlagen mit den Befehlszeile von Linux.

Aber mir hat die Aufgabe keine Ruhe gegönnt und so habe ich mit folgende Zeilen ein erstes Resultat gefunden:

Die Datei text-B0000.txt beinhaltet den zu modifizierenden Block.

Diese Zeilen habe ich ausprobiert:

#!      (1)       GENERELL
                  pfad_001='/home/paulheinz/Downloads' ;

#!      (2)       KOMMANDO
#!      (2.1)     KOPIE ERSTELLEN
                  if [ -s ${pfad_001}/text-B0000.txt ]; then
                       cp ${pfad_001}/text-B0000.txt ${pfad_001}/text-B0010.txt ;
                  fi ;

#!      (2.2)     KOPIE BEARBEITEN
#!      (2.2.1)   ZITAT EXTRAHIEREN
                  sed 's/<blockquote class="rte__textbox-blockquote">/<WRAP justify>/g' ${pfad_001}/text-B0010.txt > ${pfad_001}/text-B0020.txt ;
                  sed 's/<p>/>  \/\//g' ${pfad_001}/text-B0020.txt > ${pfad_001}/text-B0030.txt ;
                  sed 's/<\/p>/\/\/#<\/WRAP>/g' ${pfad_001}/text-B0030.txt > ${pfad_001}/text-B0040.txt ;
                  sed 's/#/&\n/g
                       s/#//g' ${pfad_001}/text-B0040.txt > ${pfad_001}/text-B0050.txt ;

#!      (2.2.2)   QUELLE EXTRAHIEREN
                  sed 's/<cite>/<WRAP rightalign>#/g;
                       s/<\/cite>//g' ${pfad_001}/text-B0050.txt > ${pfad_001}/text-B0060.txt ;
                  sed 's/#/&\n/g
                       s/#//g' ${pfad_001}/text-B0060.txt > ${pfad_001}/text-B0070.txt ;
                  sed 's/ "/ \/\/"/g ;
                       s/" /"\/\/ /g ;
                       s/". /".\/\/ /g ;
                       s/<\/blockquote>/<\/WRAP>/g' ${pfad_001}/text-B0070.txt > ${pfad_001}/text-B0080.txt ;

Das Ergebnis in der text-B0080.txt lautet:

<WRAP justify>
>  //"Es gibt nur ein Ziel, keinen Weg. Was wir Weg nennen, ist Zögern."//
</WRAP>

<WRAP rightalign>
Franz Kafka: //"Handschrift 17"// in //"Zur Frage der Gesetzte und andere Handschriften".// Frankfurt: Fischer Taschenbuch Verlag 2008. Seite 146.
</WRAP>

Über konstruktive Kritik würde ich mich freuen. Geht es kompakter?

Gruß & Dank Heinz

Antworten |