Centos

sed 命令在 Java 程式碼中無法在 Centos 上執行

  • September 10, 2019

我正在執行一個 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 或任何其他語言呼叫外部工具似乎有點笨拙。我想你可以直接在語言中進行這些修改,可能通過使用一些庫。

引用自:https://unix.stackexchange.com/questions/539902