使用Java中的ProcessBuilder运行流水线命令

时间:2017-04-15 17:51:46

标签: java linux ubuntu

我正在尝试使用以下命令提取文件中最频繁行的频率:

sort file.txt | uniq -c | sort -r | head -1|  xargs

我正在尝试使用ProcessBuilder类在Java程序中完成。以下是我如何传递给它的构造函数:

ProcessBuilder builder=new ProcessBuilder("/bin/sh", "-c","sort",fileName,"| uniq -c | sort -r | head -1 | xargs");

当我运行程序时,它只是停止执行超出此行。没有错误,但程序只是停在这一行。我可能做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试直接在命令中包含文件名:

ProcessBuilder builder=new ProcessBuilder("/bin/sh", "-c","sort " + fileName + " | uniq -c | sort -r | head -1 | xargs");