从app调用时,SED命令不生成输出文件

Jer*_*her 2 java bash sed process runtime.exec

我正在尝试编写一个java程序,该程序在Java中使用Strings并在perl脚本中替换相应的文本序列.这是我的代码:

    String sedFirstLine = "'s/AAA/"+newFirstLine+"/'";
    String sedNewCntr = "'s/BBB/"+newCntr+"/'";
    String sedNewSpacing = "'s/SPACE/"+newSpacing+"/'";
    String sedNewDmax = "'s/MAX/"+newDmax+"/'";
    String sedInputFile = "/filepath/myPerlScript.pl" 
    String sedOutputFile = "/filepath/myNewPerlScript.pl";
    String[] cmdArray3 = {"sed", "-e", sedFirstLine,"-e", sedNewCntr,"-e", sedNewSpacing,"-e", sedNewDmax, "-e", sedInputFile, ">", sedOutputFile};
    Process runCmd;
    runCmd = Runtime.getRuntime().exec(cmdArray3);
Run Code Online (Sandbox Code Playgroud)

当我运行此程序时,不会生成输出文件"myNewPerlScript.pl".我不确定我写的是什么问题.我之前提到的Java变量是"newFirstLine","newCntr"等.

use*_*001 7

这是因为输出重定向(即>)是shell的功能.为了重定向命令的输出,您可以通过shell调用该命令.例如,使用此命令

String[] cmdArray3 = {"bash", "-c", "sed 's/AAA/BBB/' inputfile > output"};
Process runCmd = Runtime.getRuntime().exec(cmdArray3);
Run Code Online (Sandbox Code Playgroud)

应按预期创建输出文件.