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"等.
这是因为输出重定向(即>)是shell的功能.为了重定向命令的输出,您可以通过shell调用该命令.例如,使用此命令
String[] cmdArray3 = {"bash", "-c", "sed 's/AAA/BBB/' inputfile > output"};
Process runCmd = Runtime.getRuntime().exec(cmdArray3);
Run Code Online (Sandbox Code Playgroud)
应按预期创建输出文件.
| 归档时间: |
|
| 查看次数: |
1988 次 |
| 最近记录: |