3

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

我使用的命令是:

perl -pi -e 's/\s+/ /g' file.csv

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

知道为什么会这样吗?

谢谢!

4

2 回答 2

8

\s表示五个字符:[ \f\n\r\t]. 因此,您将用单个空格替换换行符。-l在您的情况下,最简单的方法是使用标志启用自动行尾处理:

perl -pi -le 's/\s+/ /g' file.csv

这样,换行符将在-e语句之前被剔除并在之后附加。

于 2012-11-30T11:10:35.787 回答
0

将我的两美分添加到上一个答案中。如果您在 perl 脚本本身中使用此正则表达式,则可以将其更改为:

s/[ ]+/ /gis;

这将改变每一行并且不会删除行尾。

于 2012-11-30T11:24:05.900 回答