从ProcessBuilder从java执行sed时,获取:sed:-e expression#1,char 1:unknown命令:`'';
我在linux中从java运行此命令:从ProcessBuilder从java执行sed时,获取:sed:-e expression#1,char 1:unknown命令:`'';,java,sed,Java,Sed,我在linux中从java运行此命令: sed -i.bak 's/'1111'/'22222'/' /home/my/test/page.html 获取此错误: sed: -e expression #1, char 1: unknown command: `'' 从ProcessBuilder从java执行时 像这样: String s = "'s/'1111'/'22222'/'" ProcessBuilder pb = new ProcessBuilder(); pb.comman
sed -i.bak 's/'1111'/'22222'/' /home/my/test/page.html
获取此错误:
sed: -e expression #1, char 1: unknown command: `''
从ProcessBuilder从java执行时
像这样:
String s = "'s/'1111'/'22222'/'"
ProcessBuilder pb = new ProcessBuilder();
pb.command("sed","-i.bak",s,"/home/my/test/page.html);
当从纯linux控制台运行时,它工作得很好,只有从java运行时,它才会给我这个错误。。
有什么想法吗?我想
String s=“\”s/'1111'/'2222'/\”代码>会更好。使用sed-i.bak“s/'1111'/'2222'/”文件
我认为如果可能,更合适的选择是将sed命令存储在自己的文件中。文件的内容将是s/'1111'/'2222'/
,sed
将使用附加参数-f/path/to/The/script.sed执行。没有必要交换或转义引号。我不记得ProcessBuilder是否尊重shebangs,但如果它尊重shebangs,它可以进一步简化Java的调用。这仍然会给我同样的错误:@WiktorStribiżewString old=“1111”String newV=“2222”String[]command={“sed”、“-I.bak”、“'s/“+old+”/“+newV+”/g'、/home/my/test/page.html};仍然给出相同的错误。。我在这里错过了什么@WiktorStribiżewString old=“1111”String newV=“2222”@WiktorStribiżewI认为String s=“\”s/'1111'/'2222'/\”代码>会更好。使用sed-i.bak“s/'1111'/'2222'/”文件
我认为如果可能,更合适的选择是将sed命令存储在自己的文件中。文件的内容将是s/'1111'/'2222'/
,sed
将使用附加参数-f/path/to/The/script.sed执行。没有必要交换或转义引号。我不记得ProcessBuilder是否尊重shebangs,但如果它尊重shebangs,它可以进一步简化Java的调用。这仍然会给我同样的错误:@WiktorStribiżewString old=“1111”String newV=“2222”String[]command={“sed”、“-I.bak”、“'s/“+old+”/“+newV+”/g'、/home/my/test/page.html};仍然给出相同的错误。。我在这里错过了什么@WiktorStribiżewString old=“1111”String newV=“2222”@WiktorStribiżew