2011-03-04 23 views
7

utilizo este comando:usando sed para insertar tabulaciones

sed -i "10 i \t\t\ttime.sleep(0.1) " /home/test_file 

para insertar en la línea 10 una línea como: <TAB><TAB><TAB>sleep(0.1)

Pero tengo

t<TAB><TAB>sleep(0.1)... 

¿Me puede decir cómo obtener este resultado? gracias

PS. Uso este comando en un script bash ejecutable.

+3

Si darklion resuelve su problema, por favor, acepte su respuesta haciendo clic en el hueco de marca de verificación que aparece en el margen izquierdo. Se pondrá verde para indicar que su respuesta fue la más útil para resolver su problema. Él (y usted) también serán recompensados ​​con algunos puntos de reputación. No es habitual en Stack Overflow editar el título para indicar que el problema se ha resuelto. –

Respuesta

28

Creo que el problema es la competencia entre la forma en que el shell y sed están expandiendo los metacaracteres. He intentado triplicando el primer carácter de barra invertida y que parece que funciona para mí:

sed -i "i \\\t\t\ttime.sleep(0.1) " tmp.tmp 
+0

¡SÍ! Funciona perfectamente. Muchas gracias – georgian

+0

De nada, lo siento, lo entendí mal la primera vez. – darklion

+0

¿Por qué ha publicado dos respuestas diferentes? Aparentemente ya sabes que puedes editar una respuesta existente, ya que editaste la que publicaste antes de esta. –