0

解決済み 以下のコメントを参照

わかりました、これはトリッキーです:

私はJavaからこのコマンドを呼び出しますProcess.exec()

grep -ne 'xxx\|yyy' file

のみを返しますxxxか?

編集: Java\で withをエスケープします。\\

しかし、同じマシンのコマンドラインからまったく同じコマンドを呼び出すと、両方が返さxxxyyy、期待どおり!?

-E私はすべてを試しまし'".

誰かがまったく同じ奇妙な問題に遭遇しましたか?

4

2 に答える 2

1

これはばかげた質問かもしれませんが、grep を実行するのではなく、 BufferedReader/ readLineを使用してから String.indexOf またはその他の正規表現を使用しないのはなぜですか?

grep は、おそらくファイルの検索において Java よりも高速ですが、その一方で、Java から子プロセスを作成すると、そこで得られる利点がおそらく無効になります。

于 2013-03-20T20:07:45.147 に答える
1

次のように「\\」を入力して「\」をエスケープする必要があります。

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