0

已解决请参阅下面的评论

好的,这个很棘手:

我从 Java 调用这个命令Process.exec()

grep -ne 'xxx\|yyy' file

它只返回xxx

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

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

我已经尝试了一切,越来越少地转义-E,更改'"(当您从 java 运行时,这实际上也不起作用)?!

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

4

2 回答 2

1

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

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

于 2013-03-20T20:07:45.147 回答
1

您必须通过按如下方式输入 '\\' 来转义 '\':

.exec("grep -ne 'xxx\\|yyy' file");
于 2013-03-20T19:51:03.600 回答