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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: colinardo
colinardo 23.03.2016 aktualisiert um 12:19:08 Uhr
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
Mitglied: Biber
Biber 23.03.2016 aktualisiert um 12:13:19 Uhr
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]
Mitglied: colinardo
colinardo 23.03.2016 aktualisiert um 12:20:32 Uhr
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