我已經測試了以下方法從我的程序執行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')的完整路徑? –