Centos
sed 命令在 Java 程式碼中無法在 Centos 上執行
我正在執行一個 java 程式碼,該程式碼
sed
在文件上執行命令.txt
以刪除 Centos 上的 BOM。我收到以下錯誤:sed: -e expression #1, char 1: unknown command: `''
Java 程式碼:
String[] args = {"sed","-i","'1s/^\\xEF\\xBB\\xBF//'","/tmp/output.txt"}; ProcessBuilder processBuilder = new ProcessBuilder(args); Process p = processBuilder.start(); int exitVal = p.waitFor(); BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); String line = null; // read the output from the command while ((line = stdInput.readLine()) != null) { output.append(line + "\n"); } // read any errors from the attempted command logger.info("Here is the standard error of the command (if any):\n"); while ((line = stdError.readLine()) != null) { logger.info("Error: " + line); }
錯誤消息表明
sed
不知道命令'
(單引號,表達式中的第一個字元)是什麼。
sed
刪除表達式周圍的單引號。您可能需要在 shell 中使用它來保護字元串不被 shell 解釋,但是當sed
從另一種語言呼叫時,您將不需要它們。此外,從 Java 或任何其他語言呼叫外部工具似乎有點笨拙。我想你可以直接在語言中進行這些修改,可能通過使用一些庫。