Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在命令行中使用 perl 来替换文本文件中的重复空格。
我使用的命令是:
perl -pi -e 's/\s+/ /g' file.csv
问题:此过程还删除了结果文件中的新行......
知道为什么会这样吗?
谢谢!
\s表示五个字符:[ \f\n\r\t]. 因此,您将用单个空格替换换行符。-l在您的情况下,最简单的方法是使用标志启用自动行尾处理:
\s
[ \f\n\r\t]
-l
perl -pi -le 's/\s+/ /g' file.csv
这样,换行符将在-e语句之前被剔除并在之后附加。
-e
将我的两美分添加到上一个答案中。如果您在 perl 脚本本身中使用此正则表达式,则可以将其更改为:
s/[ ]+/ /gis;
这将改变每一行并且不会删除行尾。