[Tustep-Liste] Datei splitten an einem bestimmten Tag und dann in verschiedene Dateien
Rene@Uni
tobn2701 at uni-trier.de
Fr Apr 19 21:03:14 CEST 2013
Hallo zusammen, Herr Kollatz, Herr Reeg,
danke, es funktioniert jetzt. Musste nur noch ein paar Veränderungen
vornehmen, weil der Text zwischen den Tags zur lang war. Bin jetzt bei
READ/STREAM/* gelandet. Komisch war noch, dass, als ich noch Anfangs-
und Endtag (statt nur Endtag, wie jetzt) benutzte, und dann jede
Variable einzeln in die Datei ausgab, nach $aken eine Leerzeile
eingefügt wurde.
http://tustep.wikispaces.com/Datei+aufteilen
Habe es auch hier hinterlegt (kann über eine Link bei
Tuscript-Musterlösungen aufgerufen werden). Wenn jemand noch Kommentare
o.ä. hat, dann bitte dort.
Herzliche Grüße & ein schönes WE,
René Tobner
HZ2*UNTERTEILE.M
***** | ---- Dateianfang ----
1 |$$- Eine große Datei anhand eines bestimmten Tags in viele kleine aufteilen
2 |$$ MODE TUSCRIPT, {}
3 |- Welche Datei soll unterteilt werden?
4 |SET this = "hz2_npzxx.tus"
5 |
6 |- Abschnittanfang und Abschnittende für Unterteilung
7 |-BUILD S_TABLE atab = ":<document*>:"
8 |BUILD S_TABLE etab = ":</document>:"
9 |
10 |-STREAM :: ein LOOP liest die ganze Datei, bis zur Endekennung (in diesem speziellen Fall)
11 |-* :: Zeileneinteilung der zu lesenden Datei geht nicht verloren; (Sternvariable)
12 |ACCESS d: READ/STREAM/* $this ...
13 | snr.znr/unr, aken + txt + eken/etab
14 | - aken muss mitangegeben werden, auch wenn für die Ausgabe alles in $txt steckt
15 | - entscheidend dafür, dass die Anfangskennung nicht berücksichtigt wird, ist, dass
16 | - "/atab" weggelassen wird
17 | - Wenn mit "/atab", Leerzeile nach $aken in Zieldatei eingefügt (unerfindlicherweise,
18 | - denn nach $txt und vor $eken wurde keine Leerzeile eingefügt -- aber egal, die An-
19 | - fangskennung brauchts ja nicht.)
20 |LOOP nr
21 | READ/EXIT d
22 | SET current_file = CONCAT ("npzxx-", nr)
23 | -sequentielle Tustep-Datei, sofort anmelden (-O)
24 | ERROR/STOP CREATE (current_file, seq-O)
25 | -FILE/ERASE "{current_file}" = aken
26 | FILE/ERASE "{current_file}" = txt
27 | FILE "{current_file}" = eken
28 |END LOOP
29 |ENDACCESS/PRINT d
***** | ----- Dateiende -----
On 19.04.2013 12:00, tustep-liste-request at lists.uni-wuerzburg.de wrote:
> Send Tustep-Liste mailing list submissions to
> tustep-liste at lists.uni-wuerzburg.de
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
> or, via email, send a message with subject or body 'help' to
> tustep-liste-request at lists.uni-wuerzburg.de
>
> You can reach the person managing the list at
> tustep-liste-owner at lists.uni-wuerzburg.de
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Tustep-Liste digest..."
>
>
> Today's Topics:
>
> 1. Datei splitten an einem bestimmten Tag und dann in
> verschiedene Dateien (Rene at Uni)
> 2. Re: Datei splitten an einem bestimmten Tag und dann in
> verschiedene Dateien (Thomas Kollatz)
> 3. Re: Datei splitten an einem bestimmten Tag und dann in
> verschiedene Dateien (Gottfried Reeg)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 18 Apr 2013 20:37:03 +0200
> From: "Rene at Uni" <tobn2701 at uni-trier.de>
> To: tustep-liste at lists.uni-wuerzburg.de
> Subject: [Tustep-Liste] Datei splitten an einem bestimmten Tag und
> dann in verschiedene Dateien
> Message-ID: <51703D4F.8030100 at uni-trier.de>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Hallo zusammen,
>
> oftmals bearbeite ich vereinzelte RTF-Dateien gesammelt in Tustep. Nach
> Bearbeitung steht die Frage, wie sie wieder in einzelne RTF-Dateien
> kommen. Jede RTF ist innerhalb der gro?en Sammel-RTF-Tustep-Datei
> gekennzeichnet mit <document ...> * </document>.
>
> HZ2*UNTERTEILE.M
> 2 |$$ MODE TUSCRIPT, {}
> 3 |- Welche Datei soll unterteilt werden
> 4 |SET this = "hz2_npzxx.tus"
> 5 |
> 6 |- Abschnittanfang und Abschnittende f?r Unterteilung
> 7 |BUILD S_TABLE atab = ":<document:"
> 8 |BUILD S_TABLE etab = ":</document>:"
> 9 |
> 10 |ACCESS d: READ/RECORDS $this ...
> 10/1 | snr.znr/unr, aken/atab + txt + eken/etab
> 11 |LOOP nr
> 12 | READ/EXIT d doc
> 12/1 | SET current_file = CONCAT ("hz2_npzxx-", nr)
> 13 | ERROR/STOP CREATE (current_file, seq-O)
> 14 | FILE/ERASE "{current_file}" = doc
> 14/1 |END LOOP
> 15 |ENDACCESS/PRINT d
> ***** | ----- Dateiende -----
>
> mit der Fehlermedlung:
> ===============================================================================
> #ma,HZ2*UNTERTEILE.M
> Start MAKRO auf: tosh am: 18.04.13 um: 20:01:58
> ######## Nach >aken< folgt >/< statt >,< oder ><
> ########
> 0.1/01 snr.znr/unr, aken/atab + txt + eken/etab
> @@@@@@@@ CREATE wegen vorangehender Fehler nicht ausgef?hrt
> @@@@@@@@
> Ende MAKRO auf: tosh am: 18.04.13 um: 20:01:58
> ===============================================================================
>
> Der Slash nach "aken" ist laut Handbuch notwendig...
>
> Gibt es vielleicht noch einen k?rzeren Weg als ?ber ACCESS?
> K?rzer als das hier vielleicht sogar auf der Linux-Kommandozeile? :)
>
> $ awk '/<document>/{n++}{print > "hz2_npzxx-" n ".txt"}' hz2_npzxx.txt
>
> Dank und viele Gr??e,
> Ren? Tobner
>
>
> ------------------------------
>
> Message: 2
> Date: Thu, 18 Apr 2013 22:24:54 +0200
> From: Thomas Kollatz <kol at steinheim-institut.org>
> To: "tustep-liste at itug.de" <tustep-liste at itug.de>
> Subject: Re: [Tustep-Liste] Datei splitten an einem bestimmten Tag und
> dann in verschiedene Dateien
> Message-ID:
> <F9ACAB24-4593-460F-A160-CB40424D2385 at steinheim-institut.org>
> Content-Type: text/plain; charset=utf-8
>
> hallo,
>
> Am 18.04.2013 um 20:37 schrieb "Rene at Uni" <tobn2701 at uni-trier.de>:
>
>> 10 |ACCESS d: READ/RECORDS $this ...
>> 10/1 | snr.znr/unr, aken/atab + txt + eken/etab
>>
>>
>> mit der Fehlermedlung:
>> ######## Nach >aken< folgt >/< statt >,< oder >< ########
>> 0.1/01 snr.znr/unr, aken/atab + txt + eken/etab
> aken/atab + txt + eken/etab ist korrekt, der Fehler liegt in der Zeile davor
> Statt
>> ACCESS d: READ/RECORDS $this ...
> sollte hier
> ACCESS d: READ/STREAM/Records $this ...
> stehen
>
> Herzliche Gr??e
> Thomas Kollatz
>
>
> ------------------------------
>
> Message: 3
> Date: Thu, 18 Apr 2013 22:34:27 +0200
> From: Gottfried Reeg <Gottfried.reeg at seegelken-reeg.de>
> To: tustep-liste at itug.de
> Subject: Re: [Tustep-Liste] Datei splitten an einem bestimmten Tag und
> dann in verschiedene Dateien
> Message-ID: <517058D3.3000309 at seegelken-reeg.de>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Lieber Herr Tobner,
>
> bei der ACCESS-Anweisung geben Sie /RECORDS als Option hinter READ. In
> diesem Fall werden einzelne S?tze eingelesen. Hier werden beim Einlesen
> keinerlei Tabellen ben?tigt.
> Sie wollen aber keine einzelnen S?tze lesen, sondern die gesamte Datei,
> die dann entsprechend der Angaben der Tabellen atab und etab unterteilt
> werden soll. In diesem Fall sollten Sie STREAM als Option angeben:
>
> ACCESS d: READ/STREAM $this ...
>
> Noch ein kleiner Hinweis: die gefundenen Tags werden nicht in die
> Dateien ausgegeben. Wenn Sie die haben wollten, m?ssen Sie die vorher
> erg?nzen:
>
> SET doc = CONCAT (aken,doc,eken)
>
> Mit freundlichen Gr??en
> Gottfried Reeg
>
> Am 18.04.2013 20:37, schrieb Rene at Uni:
>> Diskussionsforum Tustep-Liste
>> Weitere Informationen: www.itug.de
>> ------------------------------------------------------------
>>
>> Hallo zusammen,
>>
>> oftmals bearbeite ich vereinzelte RTF-Dateien gesammelt in Tustep.
>> Nach Bearbeitung steht die Frage, wie sie wieder in einzelne
>> RTF-Dateien kommen. Jede RTF ist innerhalb der gro?en
>> Sammel-RTF-Tustep-Datei gekennzeichnet mit <document ...> * </document>.
>>
>> HZ2*UNTERTEILE.M
>> 2 |$$ MODE TUSCRIPT, {}
>> 3 |- Welche Datei soll unterteilt werden
>> 4 |SET this = "hz2_npzxx.tus"
>> 5 |
>> 6 |- Abschnittanfang und Abschnittende f?r Unterteilung
>> 7 |BUILD S_TABLE atab = ":<document:"
>> 8 |BUILD S_TABLE etab = ":</document>:"
>> 9 |
>> 10 |ACCESS d: READ/RECORDS $this ...
>> 10/1 | snr.znr/unr, aken/atab + txt + eken/etab
>> 11 |LOOP nr
>> 12 | READ/EXIT d doc
>> 12/1 | SET current_file = CONCAT ("hz2_npzxx-", nr)
>> 13 | ERROR/STOP CREATE (current_file, seq-O)
>> 14 | FILE/ERASE "{current_file}" = doc
>> 14/1 |END LOOP
>> 15 |ENDACCESS/PRINT d
>> ***** | ----- Dateiende -----
>>
>> mit der Fehlermedlung:
>> ===============================================================================
>>
>> #ma,HZ2*UNTERTEILE.M
>> Start MAKRO auf: tosh am: 18.04.13 um: 20:01:58
>> ######## Nach >aken< folgt >/< statt >,< oder ><
>> ########
>> 0.1/01 snr.znr/unr, aken/atab + txt + eken/etab
>> @@@@@@@@ CREATE wegen vorangehender Fehler nicht ausgef?hrt
>> @@@@@@@@
>> Ende MAKRO auf: tosh am: 18.04.13 um: 20:01:58
>> ===============================================================================
>>
>>
>> Der Slash nach "aken" ist laut Handbuch notwendig...
>>
>> Gibt es vielleicht noch einen k?rzeren Weg als ?ber ACCESS?
>> K?rzer als das hier vielleicht sogar auf der Linux-Kommandozeile? :)
>>
>> $ awk '/<document>/{n++}{print > "hz2_npzxx-" n ".txt"}' hz2_npzxx.txt
>>
>> Dank und viele Gr??e,
>> Ren? Tobner
>>
>> ------------------------------------------------------------
>> Tustep-Liste at itug.de
>> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
>>
>
> ------------------------------
>
>
> ============================================================
> Tustep-Liste at lists.uni-wuerzburg.de
> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
>
>
> End of Tustep-Liste Digest, Vol 114, Issue 1
> ********************************************
Mehr Informationen über die Mailingliste Tustep-Liste