Benutzer mit den meisten Antworten
Mit Powershell Replace aus Datei machen

Frage
-
Hallo,
ich habe eine Textdatei mit mehreren tausend Zeilen an Code. Jetzt müsste ich dort ca. 200 Wörter verschiedene suchen/ersetzen. Ich habe jetzt eine Text- Datei mit den verschiedenen Suchbegriffen und einen weitere Text- Datei mit den ersetzt Texten. Der Text aus der ersten Datei in der ersten Zeile sollte also mit dem Text der zweiten Datei in der ersten Zeile ersetzt werden usw.
Kann ich dies mit Powershell umsetzten? Da ich dies demnächst öfters machen muss wollte ich hierfür ein Script schreiben, konnte es aber nicht umsetzen.
Danke
Antworten
-
Hallo Werner,
verstehe ich das richtig:
Du hast 3 Dateien:
- Diese datei wird bearbeitet
- Diese Datei enthält Suchbegriffe die in Datei 1. enthalten sind und gesucht werden müssen
- Diese Datei enthält die neuen Werte.
Wenn du also in Datei 1 den suchbegriff aus Datei 2, Zeile x; findest dann soll dieser mit dem Text aus Datei 3 Zeile x ersetzt werden ?
Wenn du das meinst dann kann ich dir sagen das es möglich sein sollte :)
Lade zunächst alle Dateien in verschiedene Variablen, enumeriere dann durch jede Zeile in Datei 2. und überprüfe dabei ob es übereinstimmungen mit irgendeiner Zeile in Datei 1 gibt, wenn ja dann ersetze diese übereinstimmung durch den Begriff der in Datei 3 (selbe Zeilennummer) steht.
In der Powershell würde das ganze so aussehen:
$datei1 = Get-Content .\loremipsum.txt $datei2 = Get-Content .\search.txt $datei3 = Get-Content .\replace.txt for($i =0 ; $i -lt $datei2.count ; $i++) { $datei1=$datei1 |ForEach-Object{$_ -replace $datei2[$i],$datei3[$i]} } $datei1
Einfacher wäre es wenn du die Dateien hier postest, dann kann man sich besser ein Bild davon machen.
Gruß
- Als Antwort markiert Werner A Donnerstag, 22. Mai 2014 19:50
Alle Antworten
-
Hallo Werner,
verstehe ich das richtig:
Du hast 3 Dateien:
- Diese datei wird bearbeitet
- Diese Datei enthält Suchbegriffe die in Datei 1. enthalten sind und gesucht werden müssen
- Diese Datei enthält die neuen Werte.
Wenn du also in Datei 1 den suchbegriff aus Datei 2, Zeile x; findest dann soll dieser mit dem Text aus Datei 3 Zeile x ersetzt werden ?
Wenn du das meinst dann kann ich dir sagen das es möglich sein sollte :)
Lade zunächst alle Dateien in verschiedene Variablen, enumeriere dann durch jede Zeile in Datei 2. und überprüfe dabei ob es übereinstimmungen mit irgendeiner Zeile in Datei 1 gibt, wenn ja dann ersetze diese übereinstimmung durch den Begriff der in Datei 3 (selbe Zeilennummer) steht.
In der Powershell würde das ganze so aussehen:
$datei1 = Get-Content .\loremipsum.txt $datei2 = Get-Content .\search.txt $datei3 = Get-Content .\replace.txt for($i =0 ; $i -lt $datei2.count ; $i++) { $datei1=$datei1 |ForEach-Object{$_ -replace $datei2[$i],$datei3[$i]} } $datei1
Einfacher wäre es wenn du die Dateien hier postest, dann kann man sich besser ein Bild davon machen.
Gruß
- Als Antwort markiert Werner A Donnerstag, 22. Mai 2014 19:50