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