我試圖在Java運行UNIX命令忽略雙引號在解析文件上運行UNIX命令:在Java文件
for(int i = 0; i < numTables; i++){
try{
String command = "sed -e \'s/\"/\"\"/g\' -e \'s/^/\"/\' -e \'s/$/\"/\' -e \'s/<>/\"<>\"/g\' input.dat > output.dat";
Process p = Runtime.getRuntime().exec(command);
} catch(IOException ioe){
System.out.println("Error executing command");
}
}
然而,在終端上鍵入相同的命令直接會工作。 任何想法出了什麼問題? 謝謝!
更新: 其實,我嘗試以下(使用數組,而不是隻是一個字符串)的,它太失敗:
String[] command = new String[] {"sed", "-e", "\'s/\"/\"\"/g\'", "-e", "\'s/^/\"/\'", "-e", "\'s/$/\"/\'", "-e", "\'s/<>/\"<>\"/g\'", prefixedFileList.get(i), ">", fileList.get(i)};
Process p = Runtime.getRuntime().exec(command);
有什麼想法?
作爲一個更清晰的畫面,這將UNIX終端上執行將
sed -e 's/"/""/g' -e 's/^/"/' -e 's/$/"/' -e 's/<>/"<>"/g' input.dat > output.dat
它是如何失敗?你有沒有遇到錯誤,或者什麼都沒有發生? – Renan
獲取進程的輸出流並進行打印。可能錯誤應該暴露在那裏。 –
尋找類似的東西? http://stackoverflow.com/questions/7134486/how-to-execute-command-with-parameters – AppX