2011-03-04 71 views
7

我使用這個命令:使用SED插入製表符

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

在第10行插入一個一行:<TAB><TAB><TAB>sleep(0.1)

但我得到

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

你能告訴我怎麼得到這個結果? 謝謝

PS。我在一個可執行的bash腳本中使用這個命令。

+3

如果darklion解決您的問題,請點擊顯示在左邊距空心對勾接受他們的答案。它會變成綠色,表明他的答案對解決您的問題最有幫助。他(和你)也將獲得一些聲望點獎勵。 Stack Overflow不習慣編輯標題以表明問題已解決。 – 2011-03-04 09:30:34

回答

28

我認爲問題在於shell和sed擴展元字符的方式之間的競爭。我試過三倍第一個反斜槓字符,這似乎爲我工作:

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

是的!完美的作品。非常感謝 – georgian 2011-03-04 08:05:39

+0

不客氣,對不起,我第一次弄錯了。 – darklion 2011-03-04 08:14:34

+0

你爲什麼發佈兩個不同的答案?顯然你已經知道你可以編輯一個現有的答案,就像你編輯之前發佈的答案一樣。 – 2011-03-04 09:31:31