Como posso substituir todas as ocorrências de uma string em um arquivo com PowerShell

Como posso substituir todas as ocorrências de uma string em um arquivo com PowerShell

PowerShell é poderoso o suficiente para executar as operações do Explorer de Arquivos, como copiar, mover, renomear ou excluir um arquivo. Ele pode ler e substituir o conteúdo dentro de um arquivo de texto, seja uma string ou uma única palavra. Particularmente, PowerShell tem esses comandos que podem ser empregados para ler e substituir todas as instâncias de uma string.

Este tutorial demonstrará alguns métodos para resolver a consulta mencionada.

Como substituir todas as instâncias de uma string em um arquivo utilizando o PowerShell?

Essas abordagens podem ser empregadas para corrigir a consulta declarada:

  • Conteúdo do Get e Set-Content.
  • Io.Arquivo.

Método 1: Utilize os métodos "Get-Content" e "Set-Content" para substituir cada instância de uma string em um arquivo de documento

Esta abordagem primeiro usa o “Obter conteudo”CMDLET para recuperar os dados dentro do arquivo e depois usa o“Conteúdo definido”CMDLET para substituir ou escrever a nova ocorrência ou conteúdo. Particularmente, o “-Substituir”O parâmetro é usado para substituir a instância de uma string em um arquivo.

Dê uma olhada no exemplo dado para entender completo.

Exemplo

Primeiro de tudo, vamos verificar a versão do arquivo antes de substituir todas as ocorrências. Por esse motivo, execute o “Obter conteudo”Cmdlet ao lado do caminho do arquivo:

> Get-Content C: \ doc \ arquivo.TXT

Agora, vamos substituir a palavra “Gato" com o "Cachorro”:

> (Get-Content C: \ doc \ arquivo.txt) -Rplace 'Cat', 'Dog' | Conteúdo do conjunto C: \ doc \ arquivo.TXT

De acordo com o comando acima:

  • Em primeiro lugar, usamos o “Obter conteudo”CMDlet ao lado do caminho do arquivo dentro do comando invertido.
  • Em seguida, adicionamos o “-Substituir”Parâmetro e especificado duas palavras separadas por uma vírgula, onde a primeira palavra será substituída pelo segundo.
  • Então, o pipeline “|”É utilizado para transferir a saída para o“Conteúdo definido”Cmdlet como uma entrada.
  • Finalmente, este cmdlet é usado ao lado do caminho do arquivo para confirmar a substituição da string em um arquivo:

Para a verificação, novamente, obtenha o conteúdo do arquivo selecionado:

> Get-Content C: \ doc \ arquivo.TXT

Pode -se observar que a palavra “Gato”Foi substituído por“Cachorro”Com sucesso.

Método 2: Use o “sistema.Io.Método de arquivo ”para substituir cada ocorrência/instância de uma string em um arquivo

Microsoft's .Classe de rede “Arquivo”É usado especificamente para gerenciar o File Explorer. Particularmente, ele desempenha um papel vital na substituição da instância de uma string em um arquivo.

Exemplo

Em primeiro lugar, confira o conteúdo do “php.TXT”:

> Get-Content C: \ doc \ php.TXT

Em seguida, execute os seguintes comandos:

> $ str = [sistema.Io.Arquivo] :: ReadAltText ("C: \ doc \ php.TXT").Substituir ("php", "python")
> [Sistema.Io.Arquivo] :: WRITEALLTEXT ("C: \ doc \ php.txt ", $ str)

De acordo com o código acima:

  • Primeiro de tudo, criamos uma variável e depois especificamos o “Io.Arquivo" aula.
  • O "ReadAllText ()”O método da classe mencionada lê o texto no arquivo, enquanto“Substituir()”O método substitui as ocorrências selecionadas no arquivo de texto.
  • Na segunda linha, usamos o “[Sistema.Io.Arquivo] :: writeAllText ()”Método e adicionou o caminho do arquivo e depois a variável para substituir a ocorrência especificada no arquivo:

Vamos verificar se a palavra foi substituída ou não. Para

> Get-Content C: \ doc \ php.TXT

A palavra "php”Foi substituído por“Pitão”Com sucesso.

Conclusão

Com PowerShell, toda ocorrência/instância de uma string em um arquivo pode ser substituída usando dois métodos, incluindo “Obter conteudo" e "Conteúdo definido" e "Sistema.Io.Arquivo”. Ambos os métodos recuperam o arquivo de texto e depois substituem a ocorrência da palavra especificada nesse arquivo de texto. Este post apresentou um guia completo para resolver o problema declarado.