GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare e sostituire testo, parola o stringa in un file

Se riesci a dare uno sguardo più approfondito all'interno dell'ecosistema del sistema operativo Linux, scoprirai che i suoi comandi integrati sono sufficienti per risolvere la maggior parte dei nostri problemi informatici.

Uno di questi problemi è la necessità di trovare e sostituire testo, parola o stringa in un file, specialmente quando ci si trova in un ambiente server. Una soluzione a questo problema ti consente di gestire problemi fastidiosi come l'aggiornamento di "/etc/apt/sources.list ” dopo un aggiornamento del sistema Linux riuscito.

Creazione del file di testo di prova in Linux

Crea un file di testo con un nome come "test.txt ” e popolalo con alcuni caratteri di testo, parola o stringa. Lascia che questo file si trovi sullo stesso percorso della tua istanza terminale.

$ nano test.txt
OR
$ vi test.txt 

Useremo il comando cat per annotare in modo flessibile le modifiche sul nostro file di test creato.

$ cat test.txt

Utilizzo di Sed per trovare e sostituire testo, parola o stringa in un file

Il potere di questo editor di flussi sta nella sua facilità nel realizzare la trasformazione dei flussi di input di base. Il comando sed offre un approccio rapido, facile e senza tempo per trovare e sostituire testo, parole o schemi di stringhe mirati in un file.

Trova e sostituisci le prime occorrenze di testo, parola o stringa nel file

Dal nostro file di test creato, aggiorneremo tutte le istanze della parola "LinuxShellTips ” con l'alternativa “questo sito ”. La sintassi del comando sed useremo per portare a termine questo semplice compito è il seguente:

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/' [TARGETED_FILE] 

Con riferimento al comando sed di cui sopra utilizzo e sintassi, possiamo sostituire i "LinuxShellTips del nostro file di prova ” termine con “questo sito ” termine come segue:

$ sed -i 's/LinuxShellTips/this site/' test.txt

Ora possiamo usare il comando cat per visualizzare in anteprima le modifiche sopra proposte al nostro file di prova per notare se sono state apportate modifiche sostanziali.

$ cat test.txt

Come puoi vedere, le prime due occorrenze della parola “LinuxShellTips ” sono stati sostituiti con la frase “questo sito ”.

Trova e sostituisci tutte le occorrenze di testo, Word o stringa nel file

Nonostante il comando precedente abbia sostituito tutti i modelli di parole mirati nel nostro file di test, il suo utilizzo tende ad essere selettivo nella maggior parte dei casi. Il comando funziona meglio per file di piccole dimensioni perché, in file di grandi dimensioni, solo le prime occorrenze di uno schema di parole mirato potrebbero trarre vantaggio dal suo "trova e sostituisci abilità.

Per trovare e sostituire tutte le occorrenze di uno schema di parole in qualsiasi file modificabile, devi attenerti al seguente comando sed sintassi.

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/g' [TARGETED_FILE]    

Come hai notato, il 'g' nella sintassi del comando trova e sostituisci sopra agisce come una variabile globale in modo che vengano considerate tutte le occorrenze globali di un termine in un file di destinazione.

$ sed -i 's/this site/LinuxShellTips/g' test.txt

Il comando precedente trova tutte le occorrenze globali del termine "questo sito ” e lo sostituisce con il termine “LinuxShellTips ”.

Utilizzo di Awk per trovare e sostituire testo, parola o stringa in un file

Se hai familiarità con l'utilità della riga di comando awk, allora sai che le sue potenti metriche del linguaggio di scripting lo rendono un professionista nell'elaborazione del testo. Gli amministratori di sistema Linux e gli utenti professionali trovano questo strumento efficace nell'estrazione e nel reporting dei dati.

Il comando awk la sintassi per una semplice operazione di ricerca e sostituzione è simile al seguente snippet:

$ awk '{gsub("[THE_OLD_TERM]","[THE_NEW_TERM]"); print}' [TARGETED_FILE]

Nella sintassi sopra, awk sostituirà THE_OLD_TERM da THE_NEW_TERM nel TARGATED_FILE e stampa il contenuto del file risultante sul terminale di sistema.

Adottiamo un approccio pratico:

$ awk '{gsub("Linux","ubuntu"); print}' test.txt

Con le funzionalità dinamiche di entrambi sed e awk strumenti di comando, ora dovresti trovare, sostituire e sovrascrivere modelli di testo, parole o stringhe in un file di destinazione. Questi strumenti offrono all'utente del sistema la flessibilità necessaria mentre si trova su un'interfaccia a riga di comando.


Linux
  1. Come utilizzare Awk e le espressioni regolari per filtrare testo o stringhe nei file

  2. Come scoprire le terminazioni di riga in un file di testo?

  3. trova il testo corrispondente e sostituisci la riga successiva

  4. Trova e sostituisci il testo in un file tra un intervallo di righe usando sed

  5. Come trovare l'indice di una parola in una stringa in bash?

Come confrontare e unire file di testo su Linux

Come trovare una stringa in un file su Linux

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

Come trovare file contenenti una stringa di testo specifica in Linux

Come trovare e sostituire il testo in Vim

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