2 Stimmen

RegEx und Ersetzen

Ich habe ein Powershell-Skript, das ich versuche zu schreiben, um durch eine schlecht formatierte XML-Datei zu gehen, um nach allen Knoten zu suchen, die das Wort "Datum" als Teil des Knotennamens haben. I.E.

<System><SystemName>Acme</Systemname><SystemDate>313</SystemDate><SystemNumber>3</SystemNumber><FileDate>394</FileDate></System>

Das oben beschriebene Muster wird in der Datei hunderte Male wiederholt... bei einer Datenmenge von etwa 70 MB.

Die echte Datei hat viel mehr Knoten und keine Zeilenumbrüche oder ähnliches... es erscheint also alles in einer Zeile.

Was ich tun muss, ist, die Datei zu scannen und nach allen Knoten zu suchen, die auf "Datum" enden und deren Wert nicht vierstellig ist, und sie durch einen vierstelligen Wert zu ersetzen.

Hier ist, was ich bis jetzt habe... aber es sieht so aus, als ob das Ersetzen nur das erste Auftreten ändert und nicht alle anderen Spiele nach dem ersten Spiel.

Anhand des obigen Beispiels sollte es den Schluss finden </SystemDate> und Schließen </FileDate> und stellen Sie fest, dass die Ziffer nur 3 Zeichen hat, und ersetzen Sie sie durch 9999.

 $infile=get-content z:\system.txt
 write-host $infile.Length
 $regex = New-Object System.Text.RegularExpressions.Regex ">\d\d\d</(.*Date)"
 $replace = $regex.Replace($infile,"9999")
 write-host $infile.Length
 write-host $replace.Length
 set-content -Value $replace z:\new_system.txt

Für jede Hilfe wären wir dankbar!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X