TextMate包将行结尾从CRLF转换为LF

时间:2015-03-10 12:28:50

标签: perl sed textmate textmatebundles

我可以使用

将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。

2 个答案:

答案 0 :(得分: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 }"

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

答案 1 :(得分:0)

您可以使用cereja Python package

pip install cereja

import cereja cereja.lf_to_crlf(dir_or_file_path)

如果dir路径将是递归的

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

您可以替代任何标准。参见filetools模块