来自命令行的Perl:当替换文件中的字符串时,它也会删除新行

Ale*_* A. 3 perl command-line replace file

我在命令行中使用perl来替换文本文件中的重复空格.

我使用的命令是:

perl -pi -e 's/\s+/ /g' file.csv
Run Code Online (Sandbox Code Playgroud)

问题:此过程还删除了结果文件中的新行....

知道为什么会这样吗?

谢谢!

cre*_*ive 8

\s意思是五个字符:[ \f\n\r\t].所以,你用单个空格替换换行符.在您的情况下,最简单的方法是使用-l标志启用自动行结束处理:

perl -pi -le 's/\s+/ /g' file.csv
Run Code Online (Sandbox Code Playgroud)

这样,换行符将在-e语句之前变为chomped 并在之后追加.