我在几个文件中得到了一些散乱的Windows风格的行尾,我正在尝试使用以下命令在Windows计算机上解决该问题:
perl -pi -e s/\R/\n/ example.txt
运行完此文件后,所有运行该文件的行尾均更改为CRLF,这与我的初衷相反。为什么perl会这样做,并且我可以做些什么改变以使其达到预期的效果吗?
我正在使用Strawberry Perl版本5.28。
答案 0 :(得分:1)
Windows构建的Perl默认情况下会向处理添加:crlf
层。这将在读取时将CRLF转换为LF,在写入时将LF转换为CRLF。 (其他一些语言也做类似的事情。)
您需要告诉Perl这不是文本文件。不幸的是,您无法使用ARGV(您正在使用的特殊手柄)来做到这一点。
perl -pe"BEGIN { binmode STDOUT }" example.txt >example.new.txt
move example.new.txt example.txt