2015-05-13 73 views
0

我想用文本文件中的sam替換sam_18,但它不會產生正確的結果。shell sed替換文本文件中的特殊字符,但無法替換它

sed -i -e 's/sam_18/sam/g' 

它不產生任何輸出。如果它將「_」視爲特殊字符,我有點困惑。 ? 任何幫助感謝

+0

使用'-i'等編輯到位文件(假設你給它一個文件名作爲參數)。像**那樣運行**就像在標準輸入中等待數據一樣(鍵入一些行並點擊'ctrl-d'來查看它是否執行某些操作)。 –

+0

使用選項'-i'並且沒有文件名,它應該產生這個輸出:'sed:no input files' – Cyrus

+0

這是哪個平臺? –

回答

1

選項-i需要一個文件(至少)進行就地取代:

sed -i -e 's/sam_18/sam/g' myfile 

如果沒有提供文件,sed從標準輸入(或輸入管道中讀取)。在這種情況下,您不能使用-i。那麼你會做這樣的事情:

cat myfile | sed -e 's/sam_18/sam/g' > newfile