2011-11-10 3 views
5

suggerire Ho un file example come segue:sed per cambiare stringa in un file solo una volta

c 
a 
b 
a 
b 
d 

e voglio cambiare la prima occorrenza di a-e. Poi faccio questo:

sed -i 's/a/e/' example 

e tutto a cambiato in e.

Quindi c'è un modo per rendere sed solo sostituire una volta all'interno di un file?

Grazie.

+4

possibile duplicato: http://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the-first-occurrence-in-a-file – Aziz

risposta

10

Applicando le informazioni da Aziz 'Link duplicato alla tua domanda, penso che questo vi darà il risultato desiderato per il vostro caso:

sed -i '0,/a/s//e/' example 
+3

Per maggiore leggibilità, questo potrebbe essere scritto 'sed -i 0,/a/s/a/e/'' –

4

Applicando le informazioni da Aziz' Link duplicato alla tua domanda, ho che questo vi darà il risultato desiderato per il vostro caso: risposta

sed -i '0,/a/s//e/' example 

di Rabe è buona. Tuttavia, aggiungere uno spazio tra l'intervallo di indirizzi e il comando 's' lo rende più chiaro. come questo:

sed -i '0,/a/ s//e/' example 

e la versione di Wilson sembra ridondante.