我被grep
命令困住了。我想用grep来查找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 :(得分:2)
在cmd(windows)中 产出如下:
命令:C:\ Program Files(x86)\ Git \ bin> grep“abc”C:\ Users \ Admin.gitconfig
输出:电子邮件:abc.kumar @ yahoo.com 姓名:abc.kumar
在java中:
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");
}
}
输出:
email = navneet.kumar@wct-inc.com
Done
答案 1 :(得分:1)
传递给/* code untested */
double x;
char *end
char qihjuq[] = "a s d a s d g g 1 2 3 1 2 3 5 5.4 d 10.4";
char *p = qihjuq;
while (*p) {
errno = 0;
x = strtod(p, &end);
if (errno) {
p += 1;
} else {
printf("found %f\n", x);
p = end;
}
}
的数组中的第一个String应该是命令的完整路径;所有其他字符串都应该是参数。
所以如果你使用
@Embeddable
public class IDsFromA implements Serializable {
@ManyToOne
@JoinColumn(name="cID")
private C c;
@ManyToOne
@JoinColumns({
@JoinColumn(name="b_1", referencedColumnName="b_1"),
@JoinColumn(name="b_2", referencedColumnName="b_2")
})
private B b;
}
@Embeddable
public class IDsFromB implements Serializable {
private int b_1;
private int b_2;
}
@Entity
public class A {
@EmbeddedId
private IDsFromA idsFromA;
// ...
}
@Entity
public class B {
@EmbeddedId
private IDsFromA idsFromA;
// ...
}
@Entity
public class c {
@Id
private int cID;
// ...
}
您正在使用参数Runtime.getRuntime().exec()
和 String[] cmd = {"C:\\Program Files (x86)\\Git\\bin\\grep.exe",
"grep Navneet","C:\\Users\\Admin\\type.gitconfig"} ;
调用grep,这意味着它将在该文件中搜索它找不到的字符串grep Navneet
。你想用
C:\\Users\\Admin\\type.gitconfig
代替;或者,如果您想同时找到grep Navneet
和 String[] cmd = {"C:\\Program Files (x86)\\Git\\bin\\grep.exe",
"Navneet","C:\\Users\\Admin\\type.gitconfig"} ;
Navneet
答案 2 :(得分:0)
当您在String
数组的第一个cmd
中指定要运行的命令(带完整路径)时,请不要在下一个String
中再次提及其名称。数组的第二个元素(索引1)应该只是"Navneet"
或"navneet"
。这是另一回事,您应该决定使用大写还是小写n
,这对您使用的内容很重要。