2013-03-22 22 views
0

我有一個sed命令,如果我讓輸出被髮送到stdout將-i標誌使sed將拋出一個錯誤

sed s/defaultFedoraColor/grey/ stuff.js 

但是,如果我試圖改變替代文件工作得很好通過添加-i標誌

sed -i s/defaultFedoraColor/grey/ stuff.js 

我得到的

sed: 1: "stuff.js": unterminated substitute pattern 

錯誤信息爲什麼會標誌改變的合法性我替代模式?

+1

嘗試'sed的-i「S/defaultFedoraColor /灰/」 stuff.js' – Kent 2013-03-22 17:15:39

+1

嘗試把引號的命令 – 2013-03-22 17:16:12

+0

報價圍繞模式沒有解決它對我來說是運行OS X 10.7.5,但增加了使它'sed -i's/defaultFedoraColor/grey/stuff.js'確實修復它 – BostonJohn 2013-03-22 17:22:02

回答

2

-i標誌帶參數!該參數是用於正在處理的文件的備份後綴。 (假定原始文件的備份是由給定的後綴組成的)。因此,你的模式已經成爲-i的參數,sed試圖將「stuff.js」解釋爲模式。

編輯:雖然我沒有經歷過這種錯誤的行爲,但是這就是閱讀manpage會提出的問題。

另一個編輯:也許你想簡單地添加周圍的圖案報價的建議

+0

確實解決它。手冊頁說你可以放入一個「零長度」的擴展名。我把它看成是空白的,你實際上需要做'sed -i's/default/grey stuff.js' – BostonJohn 2013-03-22 17:18:37