windows - Perl 在 Windows 上将 LF 写为 CRLF
问题描述
我在几个文件中得到了一些杂散的 Windows 风格的行尾,我正在尝试使用以下命令在我的 Windows 机器上解决它:
perl -pi -e s/\R/\n/ example.txt
运行此文件后,运行文件中的所有行结尾都已更改为 CRLF,这与我的意图相反。为什么 perl 会这样做,我有什么可以改变的以使这项工作像我期望的那样工作吗?
我使用的是草莓 Perl 5.28 版。
解决方案
Perl 的 Windows 版本:crlf
默认为句柄添加一个层。这在读取时将 CRLF 转换为 LF,在写入时将 LF 转换为 CRLF。(其他一些语言也做类似的事情。)
你需要告诉 Perl 它不是一个文本文件。不幸的是,使用 ARGV(您正在使用的特殊句柄)无法做到这一点。
perl -pe"BEGIN { binmode STDOUT }" example.txt >example.new.txt
move example.new.txt example.txt
推荐阅读
- jquery - Bootstrap 材料设计在动态 html 加载时无法正常工作
- python - 从 pandas DataFrame 的列中定位、提取和重新附加年份
- compiler-construction - 是否有存储在堆栈帧中的局部变量的符号表?
- apache-zookeeper - Zookeeper 忽略 JVMFLAGS?
- request - 在 Cypress 中提交 POST 表单并导航到结果页面
- r - 如何使用 dplyr 匹配两个 R 数据集中的部分字段匹配
- javascript - 如何检查具有可变长度的数组中的任何字符串是否存在于另一个字符串中?
- shell - 如何使用管道在第 n 个最后修改的子目录中获取第 n 个最近的文件
- python - 仅屏蔽非 NaN 值(Python)
- amazon-web-services - 为什么来自另一个 vpc 实例的入站规则中的安全组不起作用?