Utilizzo di ' sed ' per trovare e sostituire [duplicate]

Questa domanda ha già una risposta qui :

Commenti

Risposta

sed è il s tream ed itor , in quanto puoi utilizzare | (pipe) per inviare stream standard (in particolare STDIN e STDOUT) tramite sed e le altera programmaticamente al volo, rendendolo uno strumento utile nella tradizione della filosofia Unix; ma puoi anche modificare i file direttamente, utilizzando il parametro -i indicato di seguito.
Considera quanto segue :

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

s/ viene utilizzato per s sostituire lespressione trovata few con asd:

I pochi, i coraggiosi.


Lasd , il coraggioso.

/g sta per “global”, che significa farlo per lintera linea. Se lasci /g (con s/few/asd/, devono essere sempre presenti tre barre, indipendentemente da cosa accada) e few appare due volte sulla stessa riga, solo il primo few viene modificato in asd:

I pochi uomini, le poche donne, i coraggiosi.


Gli uomini asd, le poche donne, i coraggiosi.

Ciòèutile in alcune circostanze, come lalterazione di caratteri speciali allinizio delle righe (ad esempio, la sostituzione dei simboli di maggiore che alcune persone usano per citare materiale precedente nei thread di posta con una tabulazione orizzontale lasciando invariata una disuguaglianza algebrica quotata più avanti nella riga), ma nel tuo esempio in cui specifichi che ovunque few dovrebbe essere sostituito , assicurati di avere /g.

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

-i opzione viene utilizzata per modificare i n posto nel file hello.txt.

-e opzione indica e xpression / comando da eseguire, in questo caso s/.

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

Commenti

  • Io ' uso OS X, per quello che vale ', ma questo è lerrore che ottengo: sed: 1: " hello.txt ": codice comando non valido.
  • È stata proposta una modifica per aggiungere il -e flag a sed. Il flag -e è facoltativo fintanto che il comando da eseguire appare per primo, non cè un file di comando e un comando arg, e cè un solo comando.
  • @roo su mac os x, usando -ie Ho ricevuto che il file foo è stato sottoposto a backup come fooe.
  • questo comando mi fornisce un file aggiuntivo che termina con -e, perché ??: index.html-e sed -i -e ' s / n / d / g ' index.html
  • Su Mac, -i -e crea un nuovo file con -e aggiunto al nome. Sembra funzionare in bash: sed " -i " " " " -e " " s / pochi / asd / g " " somefile.xml "

Risposta

sed -i "s/fea/asd/g" hello.txt 

g: Globale

s: sostituto

-i : realtime funziona con il file inplace

Commenti

  • Quando si tratta di collegamenti simbolici, è bene aggiungere --follow-symlinks altrimenti -i trasformerà il link simbolico in una copia (modificata) del file.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *