Нужно знать, как использовать PowerShell для чтения текстового файла и замены текста? Это то, что мы называем чтением текстового файла PowerShell.
Не ищите дальше! Этот блоговый пост для вас. К концу поста я покажу вам функцию, которую я создал, чтобы сделать вашу жизнь намного проще.
Замена текста в файле с помощью PowerShell – это трехэтапный процесс.
- Чтение файла
- Поиск и замена строки
- Сохранение изменений в файле.
Чтение файла
Сначала вам нужно прочитать файл. Давайте сначала создадим его с помощью команды Set-Content
, чтобы у нас был файл для работы.
Для чтения этого файла вы можете использовать команду Get-Content
. Вы можете прочитать файл, предоставив путь к текстовому файлу параметру Path
, как показано ниже.
Поиск и замена строки
Теперь, когда у нас есть содержимое файла в памяти в виде строки, нам нужно выполнить поиск и замену строки. Один из способов сделать это – использовать оператор -replace
. Этот оператор PowerShell находит строку и заменяет ее другой.
Используя пример содержимого файла, мы можем указать строку поиска foo и строку замены bar, что должно сделать содержимое файла теперь foo foo baz.
Запись в файл
Теперь, когда у нас есть новое содержимое файла, сохраненное в $newContent
, мы можем записать это новое содержимое обратно в файл. Один из способов сделать это – использовать команду Set-Content
.
Команда Set-Content
заменяет все содержимое файла новым значением.
Когда вы снова читаете файл C:\file.txt с помощью Get-Content
, вы увидите, что теперь он содержит новое содержимое.
Работа с открытыми файловыми дескрипторами
Шаги, которые вы ранее выполнили, работают… в большинстве случаев. Однако в реальном мире вы обнаружите, что это не всегда бывает так.
Иногда вам придется иметь дело с файлами, которые открыты самим PowerShell. Это мешает вам записать новое содержимое обратно в файл.
Чтобы устранить эту проблему с открытым файловым дескриптором, я создал простой рабочий процесс, который позволяет вам создать временный текстовый файл на диске с новым содержимым, удалить исходный файл, а затем переименовать временный файл.
Вот пример того, как это работает:
Ниже приведен пример функции, которую я создал, названной Find-InTextFile
, которая использует этот подход в сочетании с возможностью поиска (а не замены) текста в файле.
Эта функция также использует более мощный синтаксис регулярных выражений для поиска строк. Вы увидите, что регулярные выражения позволяют более гибкий поиск с использованием специальных символов, таких как одинарные кавычки, специальные символы и многое другое.
Вы также можете увидеть ниже, что я использую цикл foreach для обработки нескольких файлов одновременно. Это пригодится, если у вас есть куча файлов для обработки.
Ресурсы
Для получения дополнительной информации о команде Set-Content
ознакомьтесь с Set-Content: Путь PowerShell к записи в файл или альтернативным способом записи содержимого в файл – командой Out-File
.
Source:
https://adamtheautomator.com/powershell-read-text-file/