0

我有一个包含以下数据的文件:

KP_site1
KP_site2
KP_site3

我想要以下输出:

site1
site2
site3

如何在 perl 正则表达式中实现这一点?

4

3 回答 3

3
perl -pi.bak -e's/...//' yourfile

将删除每个新行的前三个字符,如果没有三个字符,则不删除。它将更改您的文件并保留带有扩展名的备份.bak

您也可以substr在这里使用效果很好,而且使用起来有些直观。

$_ = substr($_, 3);    # returns the string after offset 3
substr($_, 0, 3) = ""; # deletes the substring in offset 0-3
于 2013-10-21T18:56:30.040 回答
3

例如,请参见下面的正则表达式

my $str = "1234567890\n";
$str =~ s/^.{$n}//s;
# was: $str =~ s/^.{$n}(.*)$/$1/s;
print $str;

没有正则表达式

    my $n    = 3;

my $str1 = "1234567890\n";
my $str2 = substr($str1, $n);

print $str1; # 1234567890
print $str2; # 4567890
于 2013-10-21T18:57:31.287 回答
0

操作员很容易=~

$_ =~ s/^KP_//;

根据您实际使用的任何变量进行自定义。这是就地修改。

处理数组:

map { $_ =~ s/KP_//; $_ } @array;

要对文件执行此操作:

perl -p -e 's/KP_//' < filename.txt
于 2013-10-21T18:52:34.573 回答