Come posso sostituire ogni occorrenza di una stringa in un file con PowerShell

Come posso sostituire ogni occorrenza di una stringa in un file con PowerShell

PowerShell è abbastanza potente da eseguire le operazioni di File Explorer, come la copia, lo spostamento, la ridenominazione o l'eliminazione di un file. Può leggere e sostituire il contenuto all'interno di un file di testo, sia una stringa o una singola parola. In particolare, PowerShell ha tali comandi che possono essere impiegati per leggere e sostituire ogni istanza di una stringa.

Questo tutorial dimostrerà un paio di metodi per risolvere la query menzionata.

Come sostituire ogni istanza di una stringa in un file utilizzando PowerShell?

Questi approcci possono essere impiegati per correggere la query dichiarata:

  • Get-Content e Set-Content.
  • Io.File.

Metodo 1: utilizzare i metodi "Get-Content" e "Set-Content" per sostituire ogni istanza di una stringa in un file di documenti

Questo approccio usa prima il "Ottenere il contenuto"CMDLET per recuperare i dati all'interno del file e quindi utilizza il"SET-CONTENT"CMDLET per sostituire o scrivere il nuovo occorrenza o contenuto. In particolare, il "-Sostituire"Il parametro viene utilizzato per sostituire l'istanza di una stringa in un file.

Dai un'occhiata all'esempio dato per comprendere approfondito.

Esempio

Prima di tutto, controlliamo la versione del file prima di sostituire ogni occorrenza. Per questo motivo, eseguire il "Ottenere il contenuto"Cmdlet insieme al percorso del file:

> Get-content c: \ doc \ file.TXT

Ora, sostituiamo la parola "Gatto" con il "Cane":

> (Get-Content C: \ Doc \ File.txt) -Replace 'Cat', 'Dog' | Set-Content C: \ Doc \ File.TXT

Secondo il comando sopra:

  • In primo luogo, abbiamo usato il “Ottenere il contenuto"Cmdlet insieme al percorso del file all'interno del comando invertito.
  • Successivamente, abbiamo aggiunto il "-Sostituire"Parametro e due parole specificate separate da una virgola, in cui la prima parola verrà sostituita con la seconda.
  • Quindi, la pipeline "|"Viene utilizzato per trasferire l'output su"SET-CONTENT"Cmdlet come input.
  • Infine, questo cmdlet viene utilizzato insieme al percorso del file per confermare la sostituzione della stringa in un file:

Per la verifica, ancora una volta, ottenere il contenuto del file selezionato:

> Get-content c: \ doc \ file.TXT

Si può osservare che la parola "Gatto"È stato sostituito con"Cane"Con successo.

Metodo 2: utilizzare il "sistema.Io.Metodo del file "per sostituire ogni occorrenza/istanza di una stringa in un file

Microsoft's .Classe di rete "File"È specificamente utilizzato per gestire l'esploratore dei file. In particolare, svolge un ruolo vitale nella sostituzione dell'istanza di una stringa in un file.

Esempio

In primo luogo, controlla il contenuto di "PHP.TXT":

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

Quindi, esegui i seguenti comandi:

> $ str = [sistema.Io.File] :: readAllText ("C: \ doc \ php.TXT").Sostituisci ("Php", "Python")
> [Sistema.Io.File] :: writealltext ("c: \ doc \ php.txt ", $ str)

Secondo il codice sopra:

  • Prima di tutto, abbiamo creato una variabile e poi specificato il "Io.File" classe.
  • IL "ReadAllText ()"Metodo della classe menzionata legge il testo nel file, mentre il"Sostituire()"Il metodo sostituisce le occorrenze selezionate nel file di testo.
  • Nella seconda riga, abbiamo usato il "[Sistema.Io.File] :: writealltext ()"Metodo e aggiunto il percorso del file e quindi variabile per sostituire il verificarsi nel file:

Controlliamo se la parola è stata sostituita o meno. Per

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

La parola "PHP"È stato sostituito con"Pitone"Con successo.

Conclusione

Con PowerShell, ogni occorrenza/istanza di una stringa in un file può essere sostituito usando due metodi, tra cui "Ottenere il contenuto" E "SET-CONTENT" E "Sistema.Io.File". Entrambi i metodi prima recuperano il file di testo e quindi sostituiscono il verificarsi della parola specificata in quel file di testo. Questo post ha presentato una guida approfondita per risolvere il problema dichiarato.