繁体   English   中英

Perl oneliner损坏了Windows中的文件(与回车有关的问题)

[英]Perl oneliner corrupts file in Windows (carriage-return related issue)

我有一个PostScript文件,我要在其中更改一行:

%%标题:我的abc

%%标题:您的定义

以下Perl oneliner在Ubuntu中达到了目的:

perl -p -ifoo.bak -e "s/%%Title:.+\n/%%Title: your def\n/" file.ps

但会损坏Windows中的文件(看起来它在每个“行”中都添加了\\ r \\ n或类似内容)。

我尝试了另一种方法,但在Windows中仍然没有运气:

perl -Mopen=OUT,:bytes -p -ifoo.bak -e "s/%%Title:.+\n/%%Title: your def\n/" file.ps

发生了什么事,我该如何解决这个问题? 谢谢。

从样式和替换中删除换行符:

perl -p -ifoo.bak -e "s/%%Title:.+$/%%Title: your def/" file.ps

或捕获并用于替换:

perl -p -ifoo.bak -e "s/%%Title:.+(\R)/%%Title: your def$1/" file.ps

\\R代表任何换行符。

如果要将实际的换行符转换为unix换行符(即\\n ):

perl -p -ifoo.bak -e "s/%%Title:.+\R/%%Title: your def\n/" file.ps

在Windows行尾是\\ r \\ n而不是\\ n,就像在UNIX中一样

perl -p -ifoo.bak -e "s/%%Title:.+\r\n/%%Title: your def\r\n/" file.ps

可能有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM