在java中执行awk命令

时间:2014-10-06 07:34:34

标签: java unix awk

我正在尝试在java中为linux / unix操作系统执行awk命令,但问题是当我执行命令时它没有显示任何错误。但是在执行后没有输出并且它需要几分之一秒才能执行i不知道问题请帮忙。

代码是

process p =new process():
yes = "awk '{print $1}' /root/Desktop/net/net.zone >> /root/Desktop/net/net.txt";
p = Runtime.getRuntime().exec(yes);

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

使用Java正确启动命令行进程并不容易。我建议您使用commons-exec而不是自己尝试。

现在命令行中有两件需要特殊处理的东西:

  • 围绕AWK脚本的单引号。当您通过CommandLine将每个参数作为单个字符串传递给addArgument时,您不再需要引号。
  • 输出重定向。

    由于您创建了子进程,因此您可以控制stdin和stout。这意味着您需要打开要在Java中追加的目标文件,将其包装在PumpStreamHandler中并将其传递给DefaultExecutor。有关详细信息,请参阅此问题:Process output from apache-commons exec