2016-12-19 16 views
-2

grepコマンドが表示されました。私は、grepを使ってjavaのファイル内の特定の文字列を探したいと思っています。Grepコマンドin java

プログラムがコンパイルされます。しかし、navneetという言葉を含む行は返されず、ただ印刷されます。

私はこの次のコードを実行しようとしている

import java.io.*; 
import java.io.BufferedReader; 
import java.io.IOException; 

public class Main { 
    public static void main (String[] args)throws IOException{ 
    Runtime rt = Runtime.getRuntime(); 
    String[] cmd = {"C:\\Program Files (x86)\\Git\\bin\\grep.exe","grep Navneet","C:\\Program Files (x86)\\Git\\bin\\gitconfig"} ; 
    Process proc = rt.exec(cmd);  
    BufferedReader is = new BufferedReader(newInputStreamReader(proc.getInputStream())); 
    String line; 
    while ((line = is.readLine()) != null) { 
     System.out.println(line); 
    } 
    System.out.println("Done"); 
    } 
} 
+0

? –

+0

条件はgrepコマンドのみを使用しています。パターン一致または正規表現ではない –

+2

コマンドラインから同じgrepを実行し、結果を表示します。 –

答えて

1

Runtime.getRuntime().exec()に渡す配列の最初の文字列は、コマンドの絶対パスにする必要があります。他のすべての文字列は引数でなければなりません。

あなたは

String[] cmd = {"C:\\Program Files (x86)\\Git\\bin\\grep.exe", 
     "grep Navneet","C:\\Users\\Admin\\type.gitconfig"} ; 

を使用するのであれば、あなたはそれが見つけることができません文字列grep Navneet、のためにそのファイルを検索します。つまり、引数grep NavneetC:\\Users\\Admin\\type.gitconfigではgrepを呼び出しています。あなたは代わりに

String[] cmd = {"C:\\Program Files (x86)\\Git\\bin\\grep.exe", 
     "Navneet","C:\\Users\\Admin\\type.gitconfig"} ; 

の代わりに使用します。あなたは 出力されたCMD(窓)の両方においてNavneetnavneet

String[] cmd = {"C:\\Program Files (x86)\\Git\\bin\\grep.exe", 
     "-i", "Navneet","C:\\Users\\Admin\\type.gitconfig"} ; 
+0

私はこれを試してみました。しかし、それだけではうまくいきません。 –

+0

その場合には、他にもいくつかの問題があります。あなたが提供した情報から、私はそれが何であるかは分かりません。 @ Krzysztof Cichockiの提案に従ってください。コマンドラインから同じgrepコマンドを実行します(DOSプロンプト)。質問を編集し、コマンドとその出力を追加することで、問題を比較して識別できるようにします。 –

0

あなたはcmd配列の最初Stringに(フルパスで)実行するコマンドを与えた場合には、再びその名を言及していません次へString。配列の2番目の要素(インデックス1)は、"Navneet"または"navneet"である必要があります。これは別のものです。大文字か小文字かを決定する必要があります。n、それはあなたが使うものです。

2

を見つけたい場合は、次のように:

コマンド:C:\プログラムファイル(x86の)\ Gitの\ビン>はgrep " ABC」C:メール:abc.kumar @ yahoo.com 名:

:Javaで

abc.kumar \ユーザーがAdmin.gitconfig

出力を\します

 import java.io.*; 
     import java.io.BufferedReader; 
     import java.io.IOException; 

    public class Main { 
      public static void main (String[] args)throws IOException{ 
      Runtime rt = Runtime.getRuntime(); 
      String[] cmd = { "C:\\Program Files (x86)\\Git\\bin\\grep.exe", "@", "C:\\Users\\Admin\\.gitconfig"}; 
      Process proc = rt.exec(cmd);  
      BufferedReader is = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
      String line; 
        while ((line = is.readLine()) != null) { 
         System.out.println(line); 
         } 
      System.out.println("Done"); 
      } 
      } 

出力:あなたはJavaの正規表現を使用していないのはなぜ

 email = [email protected] 
     Done 
関連する問題