【问题标题】:Convert csv to CRLF line endings in bash script在 bash 脚本中将 csv 转换为 CRLF 行尾
【发布时间】:2013-01-24 00:10:14
【问题描述】:

我有一个 csv,我正在使用 csv2json 将其转换为 JSON。我在更改脚本后遇到了一个问题,发现它是因为我的行尾。

当我尝试将我的 csv (original.csv) 转换为 json 时,由于行尾而出现错误。所以我在 Coda(我正在使用的文本编辑器)中打开了 csv,然后选择“转换为 CRLF”,保存文件,然后重新运行 csv2json。它奏效了。

我的问题是,如何在 bash 脚本中将 original.csv 转换为 CRLF?

我尝试使用 sed,但没有成功:

sed 's/$'"/`echo \\\r`/" original.csv > new.csv

谢谢

【问题讨论】:

  • 这不起作用:sed 's/$/\r/' file > new ?

标签: bash sed


【解决方案1】:

最终使用 perl:

perl -pe 's/\r\n|\n|\r/\r\n/g' original.csv > new.csv

【讨论】:

    【解决方案2】:

    不是bash 或sed,而是另一个非常简单的解决方案:

    在 Debian 和 Ubuntu 等衍生产品上,您可以使用 unix2dos 命令轻松地将文件中的 LF 转换为 CRLF:

    unix2dos -n original.csv new.csv
    

    您可以使用dos2unix 包安装它:

    apt-get install dos2unix
    

    要再次将CRLF 转换为LF,请使用命令dos2unix。

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多