在命令行和java代码中运行grep命令会产生不同的结果

时间:2014-07-13 10:17:38

标签: java command-line

当我在终端中运行以下grep命令时,我得到了行号列表。但是当我尝试通过java代码做同样的事情时,我没有任何结果。我不确定这里出了什么问题。

提前感谢

grep -in "callback recieved" /home/local/ws/ui_auto/UIAutomator/result/test/logs | cut -f1 -d:


public List<Integer> getLineNumbers(String pattern, String file, String pat) {
    String[] cmd = { "/bin/sh", "-c", "grep -in \""+ pattern + "\" " + file + " | cut -f1 -d:"}; // > " + file + "_" + pat };
    System.out.println(cmd[2]);
    Process proc;
    List<Integer> rline = new ArrayList<Integer>();
    try {
        proc = Runtime.getRuntime().exec(cmd);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
            rline.add(Integer.parseInt(line));
        }
    } catch (IOException e) {
        System.out.println(e);
    }
    return rline;
}

1 个答案:

答案 0 :(得分:0)

根据我们在评论中的讨论。如果放一秒钟的睡眠对你有用。试试看:

proc.waitFor(); 
  

Process.waitFor()阻止当前线程,直到进程有   终止,此时执行控制返回到线程   这催生了这个过程。

把它放在:proc = Runtime.getRuntime()。exec(cmd);