2011-12-21 17 views
9
sed -i "/xxxxxxxxxxxx/r inc-sausage" git.html 
sed -i "/xxxxxxxxxxxx/d" git.html 

Primero insertar el contenido del inc-salchicha cuando XXXXXXXXXXXX se encuentrareemplazar/patrón sustituto con el contenido del archivo

Segunda elimino XXXXXXXXXXXX

Ambos comandos hacen exactamente lo que quiero. Pero, ¿cómo puedo combinar ambos comandos sed en uno solo? Probé

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html 

Respuesta

9

Para empezar, se coould concatenar ambas sed comandos en una sola línea y evitar la repetición de la cadena de búsqueda, así:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "//d" git.html 

Además, si usted quiere eliminar xxxxxxxxxxxx solamente y no otras cosas en su línea, que podría hacer que en lugar:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "s///" git.html 
3

esto podría funcionar para usted:

sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html 

Explicación:

Ver here qué $'\n' es necesario. También tenga en cuenta que el comando d debe ser el último, ya que elimina el espacio del patrón y luego inicia inmediatamente el siguiente ciclo.

O para GNU sed:

sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html 
Cuestiones relacionadas