【问题标题】:perl one liner to preserve line endingsperl 一个线来保留行尾
【发布时间】:2019-01-02 16:56:31
【问题描述】:

我使用下面的 perl one liner 来搜索和替换文件中的模式:

perl -pi.bak -e "s/pattern/replacement/g" file

问题是在 Windows 上 perl 用 Windows 样式替换行尾。我需要保留行尾,无论它们是什么。是否有命令行选项或其他东西来完成?提前非常感谢。

【问题讨论】:

标签: windows perl line-endings


【解决方案1】:

如果您在谈论:utf8 层,您可以使用以下内容:

perl -i.bak -CSD -pe"s///" file

但是:raw 没有选项。


如果您在谈论:encoding 层,您可以使用以下内容:

perl -i.bak -Mopen=:std,:encoding(...) -pe"s///" file

但是:raw 不支持use open


当专门使用 -i 时(即不使用 STDIN 或 STDOUT 时),以下将做你想做的事:

set PERLIO=:raw
perl -i.bak -pe"s///" file
set PERLIO=

【讨论】:

  • 当想要为脚本设置一个临时环境变量时,很容易在命令之前包含它。我认为这在所有外壳上都是可移植的。 > PERLIO=:raw perl -i.bak -pe"s///" 文件
  • @UncleCarl,它绝对不能移植到所有 shell。特别是,这里使用的不支持它。
猜你喜欢
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多