GNU/Linux >> Linux Esercitazione >  >> Ubuntu

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

Il sed sta per editor di streaming. Legge il file dato, modificando l'input come specificato da un elenco di comandi sed.

Per impostazione predefinita, l'input viene scritto sullo schermo, ma puoi forzare l'aggiornamento del file.

Il comando Sed (Stream EDitor) Linux viene 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.

Qui a LinuxAPT, come parte dei nostri servizi di gestione dei server, aiutiamo regolarmente i nostri clienti a eseguire query relative ai server Linux.

In questo contesto, esamineremo come utilizzare il comando Sed per trovare e sostituire le stringhe nei file nel sistema Ubuntu 20.04.


Trova e sostituisci su Ubuntu

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

$ sed --v

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

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

Dove:

-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 linuxapt.com testbar 789

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

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

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

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

Per rendere il pattern di ricerca insensibile alle maiuscole, utilizziamo il flag I:

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

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


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 'apt' con 'road' in tutti i file nella directory corrente.

$ find . -type f -exec sed -i 's/apt/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/apt/road/g'



Ubuntu
  1. Come utilizzare il comando di arresto di Linux in Ubuntu 18.04 e CentOS 7

  2. Aggiungi e rimuovi utenti su Ubuntu 20.04 - Come eseguire questa attività?

  3. Elenca i pacchetti installati in Ubuntu 20.04 - Come eseguire questa attività?

  4. Come usare il comando string in Ubuntu

  5. Come sostituire una stringa in più file nella riga di comando di Linux

Come trovare file sulla riga di comando di Ubuntu

Come installare e utilizzare PhotoRec per recuperare file cancellati in Ubuntu 20.04

Come trovare ed eliminare file duplicati in Ubuntu usando Fdupes

Come installare e utilizzare R su Ubuntu

Come installare e utilizzare il comando Exa su Ubuntu 20.04

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