添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
憨厚的金鱼  ·  如何使用DelphiKafkaClient ...·  11 月前    · 
打篮球的长颈鹿  ·  Everything you wanted ...·  1 年前    · 
爽快的花卷  ·  ehcache ...·  1 年前    · 

在Linux上执行grep命令并捕获结果

0 人关注

我试图用下面的java代码在linux上执行grep命令,但我无法捕捉到输出。我在输出中得到的总是空

Process p;
        String output = null;
        try {
            String command = "grep searchString filename.txt";
            System.out.println("Running command: " + command);
            p = Runtime.getRuntime().exec(command);
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            if (null != output) {
                while ((output = br.readLine()) != null)
                    System.out.println(output);
            p.waitFor();
            System.out.println("exit: " + p.exitValue());
            p.destroy();
        } catch (Exception e) {
            e.printStackTrace();

如何捕获输出? 是否有任何第三方库或一些更好的方法来在linux上执行命令并捕获输出?

4 个评论
@PM77-1 下次请在标记为重复问题之前花一秒钟时间阅读问题。OP的问题与执行系统命令没有关系。
在给变量 output 分配任何数值(除 null 外)之前,你是在说 if (null != output) { 。因此,既然 output is null 在这一点上你永远不会调用 readLine 。如果你使用像Eclipse这样的IDE,它会在你的 if 语句中告诉你 "这个变量在此时只能是 null "...
@MarkoTopolnik - 我所链接的问题的公认答案正是OP所需要的(不管问题本身如何)。
java
linux
jakarta-ee
grep
Dhruv
Dhruv
发布于 2014-09-16
1 个回答
oardic
oardic
发布于 2014-09-16
已采纳
0 人赞同

当你做if检查时, output 还没有被分配。改变你的代码,如下所示。

    Process p;
    String output = null;
    try {
        String command = "grep searchString filename.txt";
        System.out.println("Running command: " + command);
        p = Runtime.getRuntime().exec(command);
        p.waitFor();
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            while ((output = br.readLine()) != null) {
                System.out.println(output);
                // Process your output here
        System.out.println("exit: " + p.exitValue());
        p.destroy();