用perl替换长空格

时间:2015-12-14 16:25:13

标签: regex perl

我正在尝试使用perl替换文件中没有任何内容的注释文本行。像这样:

## Some text                                                            ##

我试过这个命令:

perl -p -i -e 's/## Some text                                                           ##//g' file.php

但那并没有奏效。有没有办法用那么长的空格来做呢?

2 个答案:

答案 0 :(得分:1)

如果您想保留该行,请删除文字:

$ perl -pi -e 's/## Some text\s+##//'

如果您想完全删除该行:

$ perl -ni -e 'print unless /## Some text\s+##/'

答案 1 :(得分:1)

如果你想删除只有评论的所有行,并且使用领先的#字符创建评论,那么你所要做的就是:

perl -i -ne 'print unless (m/^\s*#/);' file_name

m匹配使用^(行首)\ s *(零或多个空格)

另一方面,如果要删除该特定行,则使用-n代替-p,如下所示:

perl -i -ne 'print unless (m//## Some text                                                           #/);' file_name

你的代码没有“工作”的原因是-p选项总是会给你打印。 类型:

perldoc perlrequick

perldoc perlretut

有关reg的更多信息。表达式。类型:

perldoc perlrun

有关-n和-p选项的更多信息。