Precisa de 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 no blog é para você. No final do post, vou mostrar uma função que criei para facilitar muito a sua vida.
Substituir texto em um arquivo com PowerShell é um processo de três etapas.
- Lendo o arquivo
- Encontrando e substituindo a string
- Escrevendo alterações no arquivo.
Lendo o Arquivo
Primeiro, você precisará ler o arquivo. Vamos primeiro criar um com o cmdlet Set-Content
para termos um com que trabalhar.
Para ler este arquivo, você pode usar o comando Get-Content
. Você pode ler o arquivo fornecendo um caminho de arquivo de texto ao parâmetro Path
conforme mostrado abaixo.
Encontrando e Substituindo a String
Agora que temos o conteúdo do arquivo em memória em uma string, precisamos procurar e substituir a string. Uma maneira de fazer isso é usar 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 pesquisa foo com a string de substituição bar que deve tornar o conteúdo do arquivo foo foo baz agora.
Escrevendo no Arquivo
Agora que temos o novo conteúdo do arquivo salvo em $newContent
, podemos agora escrever este novo conteúdo de volta para o arquivo. Uma maneira de fazer isso é usar o comando Set-Content
.
O comando Set-Content
substitui todo o conteúdo de um arquivo atribuindo um novo valor.
Quando você ler o arquivo C:\file.txt agora com Get-Content
, verá que ele agora contém o novo conteúdo.
Lidando com Identificadores de Arquivo Abertos
As etapas que você passou anteriormente funcionam… na maioria das vezes. No entanto, você descobrirá no mundo real que nem sempre é assim.
Você verá que ocasionalmente terá que lidar com arquivos que estão abertos no próprio PowerShell. Isso impede que você escreva os novos conteúdos de volta para o 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 utiliza 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 as expressões regulares permitirão uma pesquisa 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 vez. Isso é útil se você tiver um monte de arquivos para processar.
Recursos
Para mais informações sobre o comando Set-Content
, consulte Set-Content: A Forma PowerShell de Escrever em um Arquivo ou uma forma alternativa de escrever conteúdo em um arquivo, o comando Out-File
.
Source:
https://adamtheautomator.com/powershell-read-text-file/