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!