kanecro
Goto Top

Komplexen Text teilen via PS o.ä.

Hallo Zusammen face-smile ,

habe ein etwas größeres Problem und hoffe das mir hier geholfen werden kann...
Ich bekomme Textdateien(Dateiname immer gleich), die mehrere Informationsblöcke beinhalten.
Heißt die Anzahl der Blöcke ist immer unterschiedlich.

Ich wollte nun ein Script basteln, der für mich diese Blöcke teilt und in separat erstellten Textdateien schreibt.
Die 1. und letzte (im Bsp. Zeile 41) Zeile soll er dann für jede neu erstellte Textdatei verwenden.

UBB+UNOA:9+401546606:14+40666602:X+160307:1111+99999'     <-- Erste Zeile eine Art Überschrift soll in jede neu erstellte Textdatei als erste Zeile stehen.  
H+1+ODS:D:96A:UN'    <-- Anfang des 1. Blocks.  
M+120+0041'  
M+4:207:102'  
D+SU+047::Z'  
D+BY+72::92'  
A+'  
M+02008-0:TE'  
D+F++:::MH 0M'  
Y+21:10'  
F+AAJ:0021'  
F+CR:0024'  
F+DQ:002'  
UNS+S'  
@@+++UUT+29+1'@@    <-- Ende des 1. Blocks.  
H+2+ODS:D:96A:UN'        <-- Anfang Block Nr.2  der in die nächste Datei soll.  
M+120+004542'  
M+4::102'  
D+SU+16::Z'  
D+BY+579::92'  
D+F++:::ABCH'  
D+F++:::P0MHF'  
D+F++:::60M'  
D+F++:::ABIBEL'  
D+F++:::ABIG'  
Y+21:30'  
F+AAJ:0002542'  
F+CR:0021916'  
F+DQ:0031133'  
UNS+S'  
@@+++UUT+25+2'@@    <-- Ende des 2. Blocks.  
H+3+ODS:D:96A:UN'        <-- Anfang Block N.  
A+1+450:SA::91'  
D+F++:::ABLIG'  
Y+21:20'  
F+AAJ:043'  
F+CR:015'  
F+DQ:004'  
UNS+S'  
@@+++UUT+23+3'@@    <-- Ende des N Blocks.  
UZZ+4+99999'     <-- Die aller letzte Zeile die in jeder Textdatei als letzte Zeile stehen soll.  

Leider finde ich keine Lösung entweder steh ich aufm Schlauch oder bekomme es wirklich nicht hin^^ und hoffe das mir hier weitergeholfen werden kann.
Jens

Content-Key: 299894

Url: https://administrator.de/contentid/299894

Printed on: April 19, 2024 at 01:04 o'clock

Member: colinardo
colinardo Mar 23, 2016 updated at 11:19:08 (UTC)
Goto Top
Hallo Jens,
kein Problem hier die PS Variante:
# Pfad der Textdatei
$file = 'C:\datei.txt'  
# Ordner in dem die neuen Dateien erstellt werden
$pathout = 'C:\ziel'  
# -------
$content = gc $file
$cnt = 1
[regex]::matches(($content[1..($content.length -2)] | out-string),'(?ism)(.*?^@@\+{3}.*?$)').Captures | %{  
    @($content,$_.Groups[1].Value,$content[-1]) | Set-Content "$pathout\$([IO.Path]::GetFileNameWithoutExtension($file))_$cnt.txt"  
    $cnt++
}
Grüße Uwe
Member: Biber
Biber Mar 23, 2016 updated at 11:13:19 (UTC)
Goto Top
[OT]
Sach ma', colinardo,

wäre es nicht sinnvoller, mal den Reiseführer von Madrid zu studieren als hier die ständig nachwachsenden PowerShell-Hydra-Köppe abzuschlagen?
Wir lassen ein paar für dich über auch bis nach Ostern, wenn nötig.

Schönen Urlaub und schalt dein Handy ab!

Grüße
Biber
[/OT]
Member: colinardo
colinardo Mar 23, 2016 updated at 11:20:32 (UTC)
Goto Top
@Biber ich nutze nur die tote Zeit in den öffentlichen Verkehrsmitteln und das kann hier dauern face-smile

p.s. Nix Urlaub, neue Geschäfte rufen...

Grüße Uwe