Piszę skrypt do dostosowywania pliku konfiguracyjnego. Chcę zamienić wiele wystąpień ciągów w tym pliku i próbowałem użyć programu PowerShell do wykonania tego zadania.
Działa dobrze w przypadku pojedynczego zastąpienia, ale wykonywanie wielu zastępstw jest bardzo powolne, ponieważ za każdym razem musi ponownie przeanalizować cały plik, a ten plik jest bardzo duży. Skrypt wygląda następująco:
$original_file = 'path\filename.abc'
$destination_file = 'path\filename.abc.new'
(Get-Content $original_file) | Foreach-Object {
$_ -replace 'something1', 'something1new'
} | Set-Content $destination_file
Chcę czegoś takiego, ale nie wiem, jak to napisać:
$original_file = 'path\filename.abc'
$destination_file = 'path\filename.abc.new'
(Get-Content $original_file) | Foreach-Object {
$_ -replace 'something1', 'something1aa'
$_ -replace 'something2', 'something2bb'
$_ -replace 'something3', 'something3cc'
$_ -replace 'something4', 'something4dd'
$_ -replace 'something5', 'something5dsf'
$_ -replace 'something6', 'something6dfsfds'
} | Set-Content $destination_file
powershell
replace
Ivo Bosticky
źródło
źródło
$c = Get-Content $original_file; $c | ... | Set-Content $original_file
.Aby post George'a Howartha działał poprawnie z więcej niż jednym zamiennikiem, musisz usunąć przerwę, przypisać dane wyjściowe do zmiennej (linia $), a następnie wyprowadzić zmienną:
źródło
W wersji 3 programu PowerShell można łączyć wywołania zamiany razem:
źródło
Zakładając, że możesz mieć tylko jedną
'something1'
lub'something2'
itd. W wierszu, możesz użyć tabeli przeglądowej:Jeśli możesz mieć więcej niż jeden z nich, po prostu usuń plik
break
wif
oświadczeniu.źródło
Trzecią opcją w przypadku rurociągu jednowarstwowego jest zagnieżdżenie -zastępuje:
I:
Pozwala to zachować kolejność wykonania, jest łatwe do odczytania i zgrabnie pasuje do potoku. Wolę używać nawiasów do wyraźnej kontroli, autodokumentacji itp. Działa bez nich, ale jak bardzo temu ufasz?
-Replace to operator porównania, który akceptuje obiekt i zwraca przypuszczalnie zmodyfikowany obiekt. Dlatego możesz je układać w stos lub zagnieżdżać, jak pokazano powyżej.
Proszę zobaczyć:
źródło