2011-11-10 6 views
5

sugerir Tengo un archivo example de la siguiente manera:sed para cambiar de cadena en un archivo de una sola vez

c 
a 
b 
a 
b 
d 

y quiero cambiar la primera aparición de a a e. Entonces hago esto:

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

y todos a cambió a e.

Entonces, ¿hay alguna manera de hacer que sed solo reemplace una vez dentro de un archivo?

Gracias.

+4

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

Respuesta

10

aplicación de la información de Aziz enlace duplicado a su pregunta, creo que esto le dará el resultado deseado para su caso:

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

Para una mayor legibilidad, esto podría se escribirá 'sed -i 0,/a/s/a/e /'' –

4

aplicación de la información de Aziz enlace duplicado a su pregunta, me que esto le dará el resultado deseado para su caso: respuesta

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

de Rabe es buena. Pero agregar un espacio entre el rango de direcciones y el comando 's' lo hace más claro. así:

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

y la versión de Wilson parece redundante.

Cuestiones relacionadas