簡體   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