Javascript nodejs';执行官';命令不';t执行';sed';指挥得当
我有一个文件,我想扫描它,找到字符“{”,并创建一个新行,然后在新行上添加一个IP,在行尾添加一个分色剂,然后写入一个配置文件 从shell运行时,我可以使用以下sed命令完成此操作:Javascript nodejs';执行官';命令不';t执行';sed';指挥得当,javascript,node.js,sed,exec,Javascript,Node.js,Sed,Exec,我有一个文件,我想扫描它,找到字符“{”,并创建一个新行,然后在新行上添加一个IP,在行尾添加一个分色剂,然后写入一个配置文件 从shell运行时,我可以使用以下sed命令完成此操作: sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf inside test.conf: acl testACL{ }; shell中命令的输出显示: acl testACL{ 1.1.1.1; }; 工作完美!现在的问题是当我让nodejs执行它时:
sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf
inside test.conf:
acl testACL{
};
shell中命令的输出显示:
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;
在控制台中运行命令时:“nodejs test.js”
我得到空白输出,当我检查文件时,文件“test.conf”没有被修改!为什么
另外,如果您认为“这是一个权限问题!”我已经让nodejs exec命令向测试配置文件写入了基本的回音,它工作得很好
我还尝试了“shelljs”模块,但没有成功。我已经尝试了数小时的组合,但都没有成功!我感到困惑。我认为您需要将
\n
作为\\n
进行转义。现在,它被解析为命令中的文字换行符,这会把它搞砸