【问题标题】:automatic EOL conversion snippet?自动 EOL 转换片段?
【发布时间】:2018-12-05 06:57:06
【问题描述】:

我正在编写一个批处理脚本,它根据我的输入生成部署 shell 脚本,我发现我生成的 shell 脚本有 EOL \r\n,所以我需要添加一个过程来将此文件转换为使用 \n .我一直在寻找本机批处理的解决方案但失败了,所以现在我正在尝试用其他方法来做。

输入是典型的以\r\n 为EOL 的shell 脚本。

输出应该是与 EOL 相同的带有 \n 的 shell 脚本。

任何可以在 Windows 环境中完成的方法都将受到赞赏。

【问题讨论】:

  • DOS2Unix 似乎是一个很好的答案,但我不会认为它是重复的,因为我也在寻找可以在脚本中添加最少额外依赖的解决方案。也就是说,我正在尝试使用我的环境中可用的一切来实现目标,并且我相信实现的方式并不独特。

标签: eol


【解决方案1】:

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 调用,输入嵌入在脚本中。

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    相关资源
    最近更新 更多