2014-10-17 127 views
0

我試圖找到並替換服務器文件中的端口號(因爲我的所有協作者使用相同的服務器),所以我們需要不同的端口...我試圖使用sed是這樣的:sed -i -e '/var port./var port = 3000;/' server.js將端口從5000更改爲3000.我嘗試替換的代碼是var port = 5000;,當我嘗試在我們的rhel服務器上執行此操作時(我沒有root訪問)我得到這個消息sed: -e expression #1, char 14: expected newer version of sed查找並替換行sed舊版本

我只是沒有使用正確的正則表達式?還是服務器變得不方便?

+0

取出'-i -e '來回你的'sed' – anubhava 2014-10-17 16:21:54

+0

'var port = process.env.PORT || 5000;'可能是更好的選擇。 – iokanuon 2014-10-17 16:30:49

回答

0

如果您正在嘗試執行查找和替換操作,請不要忘記使用s來啓動該命令。此外,-e是沒有必要的(但它不應該導致任何問題)。的sed舊版本不支持文件的就地改造,所以你應該改寫自己的文件:

sed 's/var port.*/var port = 3000;/' server.js > tmp && mv tmp server.js 

,可能有必要使正則表達式更具體,但依賴於其他的內容的文件。

0

嘗試下面的sed命令這是在這個s/pattern/replacement/modifier格式,

sed -i 's/var port *= *[0-9]\+/var port = 3000/' server.js 

如果你想改變特定端口號5000然後用這個,

sed -i 's/var port *= *5000/var port = 3000/' server.js