Java exec grep | linux失败了

时间:2013-03-20 19:44:14

标签: java regex grep

解决了以下评论

好的,这个很棘手:

我用Java Process.exec()调用此命令:

grep -ne 'xxx\|yyy' file

并且只返回xxx

编辑:我在java中以\转义\\

但是当我在同一台机器上从命令行调用完全相同的命令时,它会按预期返回xxxyyy

我已尝试过所有内容,使用-E越来越少地转义,将'更改为"(当您从java运行时,这实际上奇怪地无效)?!

是否有人遇到完全相同的奇怪问题?

2 个答案:

答案 0 :(得分:1)

你必须通过如下命令'\\'来逃避'\':

.exec("grep -ne 'xxx\\|yyy' file");

答案 1 :(得分:1)

这可能是一个愚蠢的问题,但为什么不使用BufferedReader / readLine,然后使用String.indexOf或其他正则表达式,而不是使用外壳来grep?

在搜索文件时,Grep可能比Java更快,但另一方面,从Java创建子进程可能会否定在那里获得的任何好处。