我试图在java中运行一个unix命令来忽略解析文件中的双引号:
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