在java中的linux shell脚本

我在linux下使用下面的shell代码,我希望它在Java中。我想在JAVA中调用这个命令

mailq | grep -B1 -i temporarily | grep -iv deferred | \ egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' | \ awk -F" " '{print $1}' | awk '{print substr($0,10,14)}' 

mailq命令显示排队的邮件消息与各自的Id和那里的错误。 就像在上面的命令,我正在寻找消息暂时禁用的消息,并采取上述消息,其ID为* * 09089像这样检查月份,并打印该ID的最后5个字符

  String cmd = "mailq | grep -B1 -i temporarily | grep -iv deferred | " +"egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |" + " \'{print $1}\' | awk \'{print substr($0,10,14)}\'"; try { ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd); Process p = pb.start(); p.destroy(); } catch (Exception e) {e.printStackTrace();} 

一般来说,这种类型的问题在Java中由“运行时”类处理。 在这里运行时的例子Java,你可以找到一个如何做到这一点的例子

新的方法将使用ProcessBuilder类

如果我理解正确的话,你希望做同样的事情,这个shell命令,但在纯Java中,而不是从Java运行它。 端口的一个优点是可移植性。

我想你想要JavaMail做邮件访问。 我不是这个API的专家,但我用它在一个小的处理程序来显示它的用法: 电子邮件草图 。

然后你需要筛选出结果,并隔离你想要的部分,这不是很难。