Perl一行删除空格

时间:2014-03-14 15:14:07

标签: perl

我将这一行拼凑在一起以更改csv文件中的值。它完美无缺,除了它删除所有空间。如果有人能解释我做错了什么,我会很感激。

    perl -pne 's/\s+(-?\d+\.?\d*)/$1>100?1000:$1/ge

1 个答案:

答案 0 :(得分:5)

一切与正则表达式的LHS相匹配

\s+(-?\d+\.?\d*)

将被替换。这包括与\s+匹配的空格。您可以使用零宽度后视断言,如Matt建议的那样:

perl -pe 's/(?<=\s)(-?\d+\.?\d*)/$1>100?1000:$1/ge' file

或特殊的\K表单,它将保留&#34; \K之前的所有内容:

perl -pe 's/\s+\K(-?\d+\.?\d*)/$1>100?1000:$1/ge' file

请注意,-p-n都会遍历输入文件的每一行,因此您只需要一个或另一个(尽管-p会覆盖-n如果你指定两者)。我使用-p因为它会自动打印每一行。详情请见perldoc perlrun