【问题标题】:TextMate bundle to convert line endings from CRLF to LF用于将行尾从 CRLF 转换为 LF 的 TextMate 包
【发布时间】:2015-03-10 12:28:50
【问题描述】:

我可以使用 LF 转换为 CRLF

sed "s/$/`echo -e \\\r`/"

我也可以删除所有行尾

perl -pe 's/\r|\n//g'

我创建了一个修改版本,我认为它只会从 CRLF 中删除 CR,但它似乎不起作用,有什么想法吗?

perl -pe 's/\r//g'

更新: perl 脚本不适用于 Apple Mac OS X TextMate 编辑器,因为它不显示或读取 \r。

【问题讨论】:

  • “似乎不起作用”是什么意思?那应该完全按照您的要求进行。你在哪个平台上工作?如果你在 Windows 上,那么 Perl 会在输出时放回 CR,但它也会在输入时被删除,所以在程序中没有什么要删除的。
  • 我正在使用一个名为 TextMate 的 Mac 编辑器。我怀疑一旦我在保存文件时转换了行尾,它就会将它们恢复回来。奇怪的是,当我将行尾从 LF 转换为 CRLF 时,它并没有恢复。
  • 我想我可能已经破解了,TextMate 不显示也不读\r。我搜索并替换为 perl -pe 's/\015/,/g' 但没有出现逗号。看来我必须使用 File > Save As - Line Endings: LF

标签: perl sed textmate textmatebundles


【解决方案1】:

在非 Windows 机器上,您提供的代码确实有效。

$ echo -ne "foo\r\nbar\r\n" | od -c
0000000   f   o   o  \r  \n   b   a   r  \r  \n
0000012

$ echo -ne "foo\r\nbar\r\n" | perl -pe's/\r//g' | od -c
0000000   f   o   o  \n   b   a   r  \n
0000010

在 Windows 机器上(默认在读取时翻译 CRLF⇒LF,在写入时翻译 LF⇒CRLF),您可以使用

perl -pe"BEGIN { binmode STDOUT }"

有便携式解决方案,但它们更长。

【讨论】:

    【解决方案2】:

    您可以使用cereja Python package

    pip install cereja

    import cereja cereja.lf_to_crlf(dir_or_file_path)

    如果是目录路径将是递归的

    cereja.lf_to_crlf(dir_or_file_path, ext_in=[“.py”,”.csv”])

    您可以替换任何标准。查看文件工具模块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2016-05-19
      相关资源
      最近更新 更多