PowerShell:
Wyszukiwanie i zamiana tekstu
Jak to zrobić:
Załóżmy, że chcesz zmienić “hello” na “hi” w tekście. W PowerShell to proste:
# Szukanie i zamiana tekstu w zmiennej
$text = "hello world"
$newText = $text -replace 'hello', 'hi'
$newText
Wyjście będzie wyglądać tak:
hi world
A jeśli zechcesz to zautomatyzować dla wielu plików:
# Szukanie i zamiana w wielu plikach
Get-ChildItem *.txt | ForEach-Object {
(Get-Content $_) -replace 'stary', 'nowy' | Set-Content $_
}
Pamiętaj, że -replace
korzysta z wyrażeń regularnych, więc sprytne triki z nimi również zadziałają.
Deep Dive
Początki “find and replace” sięgają początków edycji tekstu na komputerach. To nie tylko funkcja notatników i IDE, ale podstawowe narzędzie w skryptach i automatyce. PowerShell udostępnia -replace
jako część swojej składni, co czyni go bardzo elastycznym.
Alternatywą jest sed
w Unixach, ale w PowerShell, Get-Content
, -replace
i Set-Content
to potężna kombinacja. Możesz np. użyć Get-Content
do wczytania pliku, -replace
do przeszukania ciągów znaków oraz Set-Content
do zapisania zmian.
Ważne jest, że -replace
działa z wyrażeń regularnych (regex), co oznacza, że możesz wykonywać bardzo specyficzne zmiany w tekście.
See Also
- about_Comparison_Operators
- about_Regular_Expressions
- PowerShell Gallery - do poszukiwania skryptów społeczności
Pamiętaj, że praktyka czyni mistrza. Korzystając z tych zasobów oraz eksperymentując, szybko staniesz się doświadczonym użytkownikiem PowerShell.