[Tustep-Liste] Inhalt einer Datei in Einzeldateien speichern
Hans Derkits
hans.derkits at utanet.at
Do Okt 6 15:22:02 CEST 2005
Lieber Herr Brunschön,
hier eine einfache Lösung Ihres Problems in Ruby. Sie können sie z.B.
über den in eine System-Datei exportierten Text laufen lassen.
Wenn das xml-tag, wie in ihrem Beispiel, in einer eigenen Zeile steht,
genügt Folgendes:
------------v----------
#!/usr/local/bin/ruby
datei = File.new("0.xml", "w+")
while zeile = gets
if m = /<page nr="(\d+)">/.match(zeile)
datei.close
datei = File.new(m[1] + ".xml", "w+")
end
datei.print zeile
end
------------^-------------
Die folgende Variante geht davon aus, dass auch vor und hinter dem tag
noch etwas stehen kann und auch in die richtige Datei kommen muß:
------------v------------
#!/usr/local/bin/ruby
datei = File.new("0.xml", "w+")
while zeile = gets
if m = /<page nr="(\d+)">/.match(zeile)
datei.print m.pre_match
datei.close
datei = File.new(m[1] + ".xml", "w+")
datei.print m[0]
datei.print m.post_match
else
datei.print zeile
end
end
-----------^------------
(Aufruf:
ruby seitenweise.rb < DATEINAME
von der shell oder DOS-Box).
Beide Varianten legen zuerst eine Datei "0.xml" zum Schreiben an, für
den Fall, dass es auch vor dem ersten tag Text gibt, lesen dann den
Text zeilenweise von der Standareingabe.
Sobald ein neues tag auftaucht, wird eine neue Datei mit der
Seitenzahl als Name angelegt und in diese weitergeschrieben. (Die
zweite Variante schreibt zuvor vor dem tag vorkommenden Text in die
gerade offene Datei, und erst den Rest in die neue.) In beiden Fällen
wird das tag mit in die Ausgabe geschrieben.
Mit herzlichen Grüßen
Hans Derkits
> Liebe TUSTEP-Gemeinde,
>
> in einer Datei sind Daten nach folgenden Schema geordnet:
>
> 8.1 | <page nr="3">
> 8.2 | Viel Text
> 8.3 | Viel Text
>
>
> 9.1 | <page nr="57">
> 9.1 | Noch viel mehr Text
>
> 10.1 | <page nr="63">
> 10.2 | Viel Text
>
> ...
>
> Es wäre hilfreich, wenn Tustep die Daten, die jeweils mit <page
> nr="n"> beginnen, in einer neuen Datei speichern könnte, wobei der
> Dateiname aus dem Wert der Seitenzahl bestehen soll, also z.B.
> 3.xml, 57.xml etc. Im Idealfall beginnt mit <page nr="n"> ein neuer
> Satz, also z.B. 8.1.
>
> Wir brauchen also wohl ein #ko.
>
> TUSTEP müßte
> die Zeichenfolge <<page nr="<>>/" suchen
> den Wert der Seitennummer auslesen, z.B.
> zf+ 1 |<<page nr="<>>/"|
> liv 1 i1 (an dieser Stelle Danke an Herrn Trauth)
>
> ggf. die aktuelle Satznummer auslesen
> den aktuellen Satz kopieren
> prüfen, ob eine Datei mit dem Namen i1.xml vorhanden ist
> Falls nein, eine neue permanente Datei anlegen
> den kopierten Satz einfügen
>
> und weitermachen bis Ende.
>
>
> Wer hat Zeit und Lust mir zu helfen?
>
> Liebe Grüße und vielen Dank im voraus
>
> Wolfram Brunschön.
>
> ------------------------------------------------------------
> Tustep-Liste at itug.de
> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
--
Hans Derkits
hans.derkits at utanet.at
Mehr Informationen über die Mailingliste Tustep-Liste