2015-02-11 106 views
2

我有一個文件,我想掃描它,找到字符'{'並創建一個新行,然後在新行上添加一個IP並添加一個半古龍香水到行尾,然後寫入一個配置文件。nodejs'exec'命令不會正確執行'sed'命令

我可以從外殼中運行時具有以下sed命令實現此目的:

sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf 

內部test.conf:

acl testACL{ 
}; 

從命令在外殼的輸出所示:

acl testACL{ 
1.1.1.1; 
}; 

作品完美!現在問題是,當我到的NodeJS執行它:

 var sys = require('sys'); 
     var exec = require('child_process').exec; 
     function puts(error, stdout, stderr) { sys.puts(stdout) }; 
     exec("sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf",puts); 
     return 0; 

當我運行在控制檯命令:「test.js的NodeJS」

我得到空的輸出,當我檢查文件, 'test.conf'文件沒有被修改!爲什麼?!

此外,如果你想'它的權限問題!'我已經有nodejs exec命令寫入測試配置文件的基本回聲,它工作正常。

我也嘗試過'shelljs'模塊,但沒有運氣。我已經嘗試了幾個小時的無數組合,現在沒有優勢!我很困惑。

回答

2

我認爲你需要逃避你的\n\\n。現在,它在命令中被解析爲字面換行符,這正在搞亂它。