【问题标题】:replace lf with cr-lf in text file Cygwin在文本文件 Cygwin 中用 cr-lf 替换 lf
【发布时间】:2012-02-13 23:36:47
【问题描述】:

我有一个将内容输出到文件的 Cygwin 脚本。我唯一的问题是它总是使用\n“lf”行结尾而不是\r\n“cr-lf”。我想替换它们,或者只是让 cygwin 始终输出 \r\n 作为行尾。

我在脚本中尝试了以下两个命令,但均无济于事。

unix2dos d:/temp.txt
sed -i -e 's/\n/\r\n/g' d:/temp.txt

【问题讨论】:

    标签: sed cygwin newline lf


    【解决方案1】:

    您的unix2dos 电话应该可以工作。您遇到了某种错误吗?

    Cygwin 安装程序有一个用于选择默认行结束约定(DOS 或 Unix)的选项,尽管它可能只在新安装期间显示——我不记得临时的了。

    【讨论】:

    • 不,没有错误。我什至可以将 unix2dos 调用放在最后一个命令之前,最后一个命令仍然有效。
    • 所以你说它似乎什么也没做?如果手动运行呢?您应该会看到类似dos2unix: converting file d:/temp.txt to Unix format ... 的消息——是吗?
    • 好吧,没关系。我从另一个脚本调用我的脚本,然后在外部脚本的末尾添加 unix2dos 并且它可以工作。
    • Cygwin 安装程序没有这样的换行选项。您是否正在考虑运行旧版本 Cygwin 的 Windows Git 安装程序(或类似的东西)?
    • 不,我在考虑旧版本的 Cygwin 安装程序。没错,当前的 Cygwin 安装程序已经没有这个选项了。
    【解决方案2】:

    您正在使用 Windows 和 Linux 文件结尾的奇怪组合指定 unix2dos 的路径。

    如果您从 Windows 命令外壳调用它,请使用:

    unix2dos d:\temp.txt
    

    如果您在 Cygwin 或 Cygwin shell 脚本或类似脚本中调用它,请使用:

    unix2dos /cygdrive/d/temp.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2016-05-09
      • 1970-01-01
      • 2019-07-02
      • 2016-03-28
      • 2011-06-03
      • 2012-07-05
      相关资源
      最近更新 更多