Поиск и замена текста

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 вы можете автоматизировать эти операции на огромном количестве файлов, сэкономив кучу времени.

Смотрите также

  • Документация по оператору -replace в PowerShell: ссылка
  • Использование Get-Content и Set-Content: ссылка