解决了以下评论
好的,这个很棘手:
我用Java Process.exec()
调用此命令:
grep -ne 'xxx\|yyy' file
并且只返回xxx
?
编辑:我在java中以\
转义\\
。
但是当我在同一台机器上从命令行调用完全相同的命令时,它会按预期返回xxx
和yyy
!
我已尝试过所有内容,使用-E
越来越少地转义,将'
更改为"
(当您从java运行时,这实际上奇怪地无效)?!
是否有人遇到完全相同的奇怪问题?
答案 0 :(得分:1)
你必须通过如下命令'\\'来逃避'\':
.exec("grep -ne 'xxx\\|yyy' file");
答案 1 :(得分:1)
这可能是一个愚蠢的问题,但为什么不使用BufferedReader / readLine,然后使用String.indexOf或其他正则表达式,而不是使用外壳来grep?
在搜索文件时,Grep可能比Java更快,但另一方面,从Java创建子进程可能会否定在那里获得的任何好处。