Precisa saber como usar o PowerShell para ler um arquivo de texto e substituir texto? Isso é o que chamamos de PowerShell Read-Text File.
Não procure mais! Este post é para você. Ao final do post, vou mostrar uma função que criei para facilitar muito a sua vida.
Substituir texto em um arquivo com o PowerShell é um processo de três etapas.
- Lendo o arquivo
- Encontrando e substituindo a string
- Escrevendo as mudanças no arquivo.
Lendo o Arquivo
Primeiro, você precisa ler o arquivo. Vamos criar um com o cmdlet Set-Content
para ter um com o qual trabalhar.
Para ler este arquivo, você pode usar o comando Get-Content
. Você pode ler o arquivo fornecendo o caminho do arquivo de texto para o parâmetro Path
, conforme mostrado abaixo.
Encontrando e Substituindo a String
Agora que temos o conteúdo do arquivo na memória em uma string, precisamos buscar e substituir a string. Uma maneira de fazer isso é usando o operador -replace
. Este operador PowerShell encontra uma string e a substitui por outra.
Usando o conteúdo do arquivo de exemplo, podemos fornecer a string de busca foo com a string de substituição bar, o que deve fazer o conteúdo do arquivo ficar foo foo baz agora.
Escrevendo no Arquivo
Agora que temos o novo conteúdo do arquivo salvo em $newContent
, podemos escrever esse novo conteúdo de volta no arquivo. Uma maneira de fazer isso é usando o comando Set-Content
.
O comando Set-Content
substitui todo o conteúdo de um arquivo atribuindo um novo valor.
Quando você ler agora o arquivo C:\file.txt com Get-Content
, verá que agora contém o novo conteúdo.
Lidando com Identificadores de Arquivos Abertos
As etapas pelas quais você passou anteriormente funcionam… na maioria das vezes. No entanto, na vida real, nem sempre acontece assim.
Você perceberá que ocasionalmente precisará lidar com arquivos que estão abertos pelo próprio PowerShell. Isso impede que você escreva os novos conteúdos de volta no arquivo.
Para remediar essa situação de identificador de arquivo aberto, criei um fluxo de trabalho simples que permite criar primeiro um arquivo de texto temporário no disco com os novos conteúdos, remover o arquivo original e, em seguida, renomear o arquivo temporário.
Aqui está um exemplo de como funciona:
Abaixo está um exemplo de uma função que criei chamada Find-InTextFile
, que usa essa abordagem combinada com a capacidade de encontrar (não substituir) texto em um arquivo.
Esta função também utiliza a sintaxe mais poderosa de expressão regular para encontrar strings. Você verá que expressões regulares permitirão uma busca mais flexível usando caracteres especiais como aspas simples, caracteres especiais e muito mais.
Você também pode ver abaixo que estou usando um loop foreach para processar vários arquivos de uma só vez. Isso é útil se você tiver um monte de arquivos para processar.
Recursos
Para obter mais informações sobre o comando Set-Content
, confira Set-Content: A Forma do PowerShell de Escrever em um Arquivo ou uma maneira alternativa de escrever conteúdo em um arquivo, o comando Out-File
.
Source:
https://adamtheautomator.com/powershell-read-text-file/