GNU/Linux >> Linux Esercitazione >  >> Linux

Usare "sed" per trovare e sostituire?

Questa domanda ha già risposte qui :Come posso sostituire una stringa in uno o più file?

(9 risposte)
Chiuso 6 anni fa.

So che a questa domanda è stata probabilmente data risposta prima. Ho visto molti thread su questo in vari luoghi, ma le risposte di solito sono difficili da estrarre per me. Sto cercando aiuto con un esempio di utilizzo del comando 'sed'.

Supponiamo di voler agire sul file "hello.txt" (nella stessa directory del prompt). Ovunque contenesse la frase "pochi", dovrebbe essere cambiato in "asd". Come sarebbe il comando?

Risposta accettata:

sed sono le s tream ndr itor, in quanto puoi usare | (pipe) per inviare stream standard (STDIN e STDOUT in particolare) tramite sed e modificarli programmaticamente al volo, rendendolo uno strumento utile nella tradizione della filosofia Unix; ma può anche modificare i file direttamente, usando -i parametro indicato di seguito.
Considera quanto segue :

sed -i -e 's/few/asd/g' hello.txt

s/ è usato per s sostituire l'espressione trovata few con asd :

I pochi, i coraggiosi.

Gli asd, i coraggiosi.

/g sta per "globale", che significa fare questo per l'intera linea. Se lasci il /g (con s/few/asd/ , devono sempre esserci tre barre, qualunque cosa accada) e few appare due volte sulla stessa riga, solo i primi few è cambiato in asd :

I pochi uomini, le poche donne, i coraggiosi.

Gli uomini asd, le poche donne, i coraggiosi.

Ciò è utile in alcune circostanze, come la modifica di caratteri speciali all'inizio delle righe (ad esempio, sostituendo i simboli maggiore di che alcune persone usano per citare il materiale precedente nei thread di posta elettronica con una scheda orizzontale lasciando una disuguaglianza algebrica tra virgolette più avanti nella riga intatto), ma nel tuo esempio in cui specifichi che ovunque few si verifica dovrebbe essere sostituito, assicurati di avere quel /g .

Le seguenti due opzioni (flag) sono combinate in una, -ie :

-i l'opzione viene utilizzata per modificare i n posizionare nel file hello.txt .

-e l'opzione indica la e xpression/command da eseguire, in questo caso s/ .

Nota:è importante utilizzare -i -e cercare/sostituire. Se esegui -ie , crei un backup di ogni file con la lettera 'e' aggiunta.

Correlati:abeles -Trova significato- Cerca nel dizionario!
Linux
  1. Utilizzo di sed per trovare e sostituire file di testo in Linux

  2. Utilizzo dei comandi Sed,ex e perl per trovare e sostituire un testo in Linux

  3. Vi e Vim Editor:12 potenti esempi di ricerca e sostituzione

  4. Utilizzo di grep e sed per trovare e sostituire una stringa

  5. Trova e sostituisci con sed nella directory e nelle sottodirectory

Come utilizzare sed per trovare e sostituire la stringa nei file

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

Come trovare e sostituire il testo in Vim

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx

Esempi di manipolazione di stringhe Bash:lunghezza, sottostringa, trova e sostituisci

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