фрагмент автоматического преобразования EOL? - PullRequest
0 голосов
/ 05 декабря 2018

Я работаю над пакетным сценарием, который создает сценарий оболочки развертывания в соответствии с моим вводом, и я обнаружил, что мой сгенерированный сценарий оболочки имеет EOL \r\n, поэтому мне нужно добавить процедуру для преобразования этого файла в \n,Я искал решение в нативном пакете, но не смог, поэтому сейчас я пытаюсь сделать это другими способами.

Входные данные представляют собой типичный сценарий оболочки с командами с \r\n в качестве EOL.

Выходными данными должен быть тот же сценарий оболочки с \n, что и в EOL.

Любойметод, который может быть сделан в среде Windows, будет оценен.

1 Ответ

0 голосов
/ 05 декабря 2018
Подход

nodejs:

const fs = require('fs');
fs.readFile('apply_patchx.sh','utf8',(err,data)=>{
    fs.writeFile('apply_patch.sh',data.replace(/\r?\n/g,"\n"),()=>{
        console.log('converted');
    });
});

Вызов по node rn2n.js, ввод встроен в скрипт.

Подход по Java:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class RN2N {
    public static void main(String[] args){
        try {
            BufferedReader br = new BufferedReader(new FileReader("apply_patchx.sh"));
            BufferedWriter bw = new BufferedWriter(new FileWriter("apply_patch.sh"));
            for(String line; (line = br.readLine()) != null;){
                bw.write(line.replaceAll("\\\\r\\\\\n", "\\\\n"));
            }
            br.close();
            bw.flush();
            bw.close();
            System.out.println("converted");
        } catch (IOException e) {
            System.exit(1);
        }
    }
}

Вызов по java RN2N,входные данные встроены в скрипт.

...