(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.