我已经测试了以下方法从我的程序执行Linux命令执行
方法1:所有分配到一个字符串系统命令无法从程序
String temp1 = "'/"+t2+"/,/"+t1+"/p'";
String command2 = "sed -n "+temp1+" app.log";
Process p1 = Runtime.getRuntime().exec(command2);
方法2:使用阵列
String [] command2 = new String []{"sed","-n","'/",t2,"/,/",t1,"/p'", "app.log";
System.out.println("The command2 is : "+Arrays.toString(command2);
Process p2 = new ProcessBuilder(command2).start();
对于方法2,这是我的参考文献link,但两种方法根本不起作用。这是我希望在终端sed -n '/14:32:54/,/14:33:44/p' app.log
这是我的代码部分用于调用系统命令运行的命令,没有任何显示在line2
可变
String [] command2 = new String []{"sed","-n","'/",t2,"/,/",t1,"/p'","stlog.txt"};
Process p2 = new ProcessBuilder(command2).start();
BufferedReader br2 = new BufferedReader(new InputStreamReader(p2.getInputStream()));
String line2;
while((line2 = br2.readLine()) != null)
{
System.out.println(line2);
}
不会在上面执行'sed的-n“/ T2 /,/ T1/P” stlog.txt',即在您正则表达式,甚至更糟糕了一大堆不必要的空间,通过七参数到'sed'? '“sed”,“ - n”,“'/”+ t2 +“/,/”+ t1 +“/ p'”,“stlog.txt”'可能是一个快速解决方案。 –
能够提供关于快速解决方案的更多解释? – yumi
这通常是一个PATH问题......您是否尝试传递'sed'(通常为'/ usr/bin/sed')的完整路径? –