【发布时间】:2023-03-17 08:29:01
【问题描述】:
当我在 linux 中执行我的 java 文件时,我正在 java 程序中运行 sed 命令。
当我在 linux 中单独运行命令时,这将起作用 -> sed '1d;$d' /home/sample/testdata.txt > /home/output/testupdate.txt
但是,当我在 linux 中运行我的 java 程序时,它返回 exit(1) 错误。我已通读并用作数组,但仍然失败。
public static void main(String[] args) {
String[] cmd = {"sed", "sed '1d;$d' /home/sample/testdata.txt > /home/output/testupdate.txt"};
String s;
Process p;
try {
p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null) {
System.out.println("line: " + s);
}
p.waitFor();
System.out.println("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {
}
}
【问题讨论】:
-
我怀疑您是否可以将
>作为参数传递并将其解析为“输出重定向”。请参阅here 以获得更好的方法。 -
'>' 是 shell 语法,我不认为你是通过 'exec' 运行 shell。
-
你根本不需要
sed。 Java 可以做所有sed可以做的事情。使用 Java 意味着它可以在没有安装sed的系统上运行(比如 Windows)。 -
@Joe ,这可以从 .sh 文件启动执行。但我试图在 java 本身内执行而不需要创建额外的 .sh 脚本