当我在终端中运行以下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;
}
答案 0 :(得分:0)
根据我们在评论中的讨论。如果放一秒钟的睡眠对你有用。试试看:
proc.waitFor();
Process.waitFor()阻止当前线程,直到进程有 终止,此时执行控制返回到线程 这催生了这个过程。
把它放在:proc = Runtime.getRuntime()。exec(cmd);