PowerShell:
Поиск и замена текста
Как это сделать:
PowerShell делает поиск и замену довольно простыми. Посмотрите -replace
для строк и Get-Content
с Set-Content
для файлов.
Замена текста в строке:
$text = "I love PowerShell"
$updatedText = $text -replace "love", "adore"
$updatedText
Пример вывода:
I adore PowerShell
Замена текста в файле:
$file = "example.txt"
$content = Get-Content $file
$content | ForEach-Object { $_ -replace "oldWord", "newWord" } | Set-Content $file
Здесь нет вывода, но теперь в example.txt
каждое “oldWord” заменено на “newWord”.
Углубленно
Со времен зарождения редактирования текста, поиск и замена были его краеугольным камнем. Это можно сравнить с функцией поиска и замены в текстовом процессоре, но суперзаряженном для нужд программирования.
В старые времена, мастера командной строки использовали инструменты вроде sed
на Unix. PowerShell внес эту функциональность в свой язык сценариев. Почему это круто? Потому что это связано с объектами, а не только с текстом. Это значит, что вы можете настраивать не только код и текстовые файлы, но и структуры данных и многое другое.
Альтернативы? Конечно. У вас есть текстовые редакторы и IDE с собственным поиском и заменой, пакетные скрипты, или даже программные библиотеки, разработанные для манипуляции с текстом.
Детали реализации? PowerShell использует regex. Это означает, что вы можете заменять содержимое, основываясь на шаблонах, а не только на фиксированных словах. Плюс с помощью сценариев PowerShell вы можете автоматизировать эти операции на огромном количестве файлов, сэкономив кучу времени.