GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Introduzione

Sed sta per S tream ED itor. È un comando Linux utilizzato per cercare, trovare e sostituire o inserire ed eliminare parole e righe in un file di testo.

Il caso d'uso più comune del comando Sed è trovare e sostituire le stringhe nei file. Quando usi il comando Sed, puoi modificare i file senza aprirli.

Questo articolo spiegherà i dettagli dell'utilizzo del comando Sed per trovare e sostituire le stringhe nei file.

Tutti gli esempi in questo tutorial sono stati eseguiti su Ubuntu 20.04.

Trova e sostituisci

Per impostazione predefinita, Sed è installato nella maggior parte delle distribuzioni Linux. Puoi verificare l'installazione di Sed sul tuo sistema Linux eseguendo:

$ sed --v

L'output sarà qualcosa del genere:

La sintassi di base dell'utilizzo del comando Sed per trovare e sostituire il testo è:

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

In cui:

-i:questa opzione consente di modificare i file del comando Sed invece di scrivere l'output nell'output standard.

s:sta per sostituto.

/ /:caratteri delimitatori.

g:è un flag sostitutivo globale.

FILE:Il file che vuoi manipolare con il comando Sed.

Si consiglia vivamente di mettere il modello di ricerca, il modello di sostituzione e altri argomenti tra virgolette.

Ad esempio, ecco un file di testo utilizzato per la dimostrazione:

567 Test test test
test /bin/zsh linuxways.net testbar 789

Per sostituire tutte le parole "test" con parole "linux", esegui il seguente comando:

$ sed -i 's/test/linux/g' test.txt

Uscita:

Se non utilizzi il flag g, viene sostituita solo la prima occorrenza del modello di ricerca in ogni riga:

$ sed -i 's/test/linux/' test.txt

Uscita:

Come puoi vedere, nell'esempio precedente, viene inserito anche il test della sottostringa all'interno della stringa della testbar. Se non vuoi sostituire una sottostringa nel modello di ricerca, mettiamo il modello di ricerca tra due limiti di parole \b:

$ sed -i 's/\btest\b/linux/g' test.txt

Uscita:

Per rendere il pattern di ricerca insensibile alle maiuscole e minuscole, utilizziamo il contrassegno I:

$ sed -i 's/test/linux/gI' test.txt

Uscita:

Nel mondo Linux, incontreremo molti casi d'uso che hanno i caratteri delimitatori nei file di testo. Dobbiamo usare la barra rovesciata \ per spezzare i caratteri delimitatori. Ad esempio, per sostituire /bin/zsh con /usr/bin/bash, eseguire:

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt

Uscita:

Trova e sostituisci ricorsivo

In molti casi, vuoi cercare ricorsivamente nelle directory i file che hanno una stringa specifica e sostituirla in tutti i file.

Ad esempio, il comando seguente cercherà e sostituirà la stringa "way" con "road" in tutti i file nella directory corrente.

$ find . -type f -exec sed -i 's/way/road/g' {} +

Se i nomi dei file contengono caratteri spazio, utilizziamo l'opzione -print0:

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

Per cercare e sostituire una stringa solo su file che hanno un'estensione specifica, eseguire:

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/way/road/g'

Conclusione

Hai esaminato alcuni esempi comuni di utilizzo del comando Sed. Cercare e sostituire una stringa di testo in un file con il comando Sed non è complicato come immagini.

In caso di dubbi, faccelo sapere nella sezione commenti.


Ubuntu
  1. Trovare file nella riga di comando (come fare per)

  2. Come trovare il numero di file in una directory e sottodirectory

  3. Come utilizzare il comando Grep per trovare testo nei file

  4. Usa il comando SED per trovare e sostituire la stringa nei file - Come eseguire questa attività su Ubuntu?

  5. Come utilizzare Sed per sostituire una stringa multilinea?

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Come rinominare file e directory in Ubuntu 20.04

Come installare e utilizzare Busybox in Ubuntu

Come trovare file sulla riga di comando di Ubuntu

Come trovare e sostituire il testo in Vim

Come utilizzare Sed per trovare e sostituire una stringa in un file