Comando sed per sostituire una stringa in un file

Sed Command Replace String File

Ogni volta che lavoriamo con qualsiasi tipo di file, è una pratica molto comune apportare modifiche a quei file trovando e sostituendo le parole. La maggior parte degli editor di testo fornisce diversi metodi basati su GUI per eseguire queste modifiche. Tuttavia, a volte, è necessario un modo per trovare e sostituire le parole all'interno di un file tramite il terminale. Pertanto, in questo articolo, ti guideremo attraverso il metodo di utilizzo del comando sed per sostituire una stringa in un file di testo. Faremo anche luce sui diversi scenari in cui questo comando può essere utilizzato.

Nota: useremo Linux Mint 20 per dimostrare l'utilizzo del comando sed per sostituire una stringa in un file. Puoi anche usare qualsiasi altra versione di Linux, se lo desideri.



Uso del comando sed:

Ora ti mostreremo alcuni esempi molto interessanti per descrivere l'utilizzo del comando sed in Linux. Vediamo come funziona questo comando in diversi scenari.



Creazione di un file di testo per la dimostrazione:

Per dimostrare l'utilizzo del comando sed, vorremmo lavorare con un file di testo. Tuttavia, puoi persino creare un file Bash o qualsiasi altro file a tua scelta. In secondo luogo, creeremo il file nella directory Home in modo da non dover specificare percorsi complessi durante l'accesso a questo file. Per creare un file di testo, è necessario eseguire i seguenti passaggi:



Fai clic sull'icona File Manager situata sulla barra delle applicazioni di Linux Mint 20:

Ora crea un nuovo file di testo nella directory Home facendo clic con il pulsante destro del mouse ovunque e quindi scegliendo l'opzione Nuovo documento dal menu a cascata e l'opzione Documento vuoto dal menu a cascata. Una volta creato il file di testo, assegnagli un nome adatto. Per questo particolare esempio, l'ho chiamato sed.txt.



Fare doppio clic su questo file per aprirlo e digitare qualsiasi testo casuale al suo interno come mostrato nell'immagine sottostante. Salva questo file di testo premendo Ctrl + S e poi chiudilo.

Ora avvia il terminale in Linux Mint 20 come mostrato nell'immagine seguente:

Dopo aver avviato il terminale in Linux Mint 20, puoi esaminare tutti gli esempi menzionati di seguito uno per uno.

Usando il comando sed per sostituire tutte le occorrenze di una data parola:

Puoi usare il comando sed per sostituire tutte le occorrenze di una data parola in un file di testo. La sintassi per raggiungere questo obiettivo è menzionata di seguito:

$sed'S/sed/TrovaParola/SostituisciParola/'file.txt'

Qui, devi sostituire FindWord con la parola che desideri sostituire e ReplaceWord con la parola da sostituire. Inoltre, devi anche sostituire file con il nome del file in cui desideri effettuare queste sostituzioni. In questo scenario, ho sostituito FindWord con sed e ReplaceWord con replace. Il nome del nostro file era sed.txt. È mostrato anche nell'immagine seguente:

La corretta esecuzione di questo comando ti mostrerà le modifiche che si sono verificate a causa dell'esecuzione di questo comando sul tuo terminale:

Usando il comando sed per sostituire l'ennesima occorrenza di una data parola in ogni riga:

Lo scenario precedente era lo scenario di sostituzione più semplice, tuttavia a volte non si desidera sostituire tutte le occorrenze di una parola, piuttosto si desidera sostituire solo la prima, la seconda o l'ennesima occorrenza di quella parola in tutte le righe. Per fare ciò, puoi eseguire il seguente comando:

$sed'S/TrovaParola/SostituisciParola/num' file.txt

Qui, devi sostituire FindWord con la parola che desideri sostituire e ReplaceWord con la parola da sostituire. Inoltre, devi anche sostituire file con il nome del file in cui desideri effettuare queste sostituzioni. In questo scenario, ho sostituito FindWord replace e ReplaceWord con sed. Il nome del nostro file era sed.txt. Inoltre, num si riferisce all'occorrenza o alla posizione della parola da sostituire. Nell'esempio dimostrato, voglio sostituire la prima occorrenza di replace con sed in ogni riga come mostrato nell'immagine seguente:

La corretta esecuzione di questo comando ti mostrerà le modifiche che si sono verificate a causa dell'esecuzione di questo comando sul tuo terminale:

Utilizzando il comando sed per sostituire una parola data in una riga specifica:

A volte, vuoi solo sostituire una determinata parola in una riga specifica e non nell'intero documento. Per fare ciò, è necessario specificare esplicitamente quel particolare numero di riga nel seguente comando:

$sed'LineNum s/TrovaParola/SostituisciParola/'file.txt'

Qui, devi sostituire FindWord con la parola che desideri sostituire e ReplaceWord con la parola da sostituire. Inoltre, devi anche sostituire file con il nome del file in cui desideri effettuare queste sostituzioni. In questo scenario, ho sostituito FindWord sed e ReplaceWord con replace. Il nome del nostro file era sed.txt. Inoltre, è necessario sostituire LineNum con il numero di riga della particolare riga in cui si desidera effettuare la sostituzione. In questo esempio, volevamo sostituire sed con replace nella riga numero 2 del nostro file come mostrato nell'immagine seguente:

La corretta esecuzione di questo comando ti mostrerà le modifiche che si sono verificate a causa dell'esecuzione di questo comando sul tuo terminale. Puoi facilmente verificare che le suddette modifiche sono avvenute solo nella riga numero 2 del nostro file e non nell'intero testo.

Conclusione:

Ogni volta che senti la necessità di sostituire una parola in un file, la prima cosa che devi fare è identificare il tuo particolare requisito, ad esempio se vuoi sostituire quella parola specifica nell'intero file o se vuoi sostituire una specifica occorrenza di quella particolare parola o si desidera sostituire quella parola in una riga specifica. Dopo aver identificato il tuo scenario particolare, puoi utilizzare quel metodo specifico dagli esempi discussi in questo articolo.