如何删除前3个字符

时间:2013-10-21 18:50:57

标签: regex perl

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

KP_site1
KP_site2
KP_site3

我想要关注输出:

site1
site2
site3

如何在perl regex中实现这一目标?

3 个答案:

答案 0 :(得分:2)

例如,请参阅下面的Regex

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

答案 1 :(得分:0)

使用=~运算符非常简单:

$_ =~ s/^KP_//;

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

处理数组:

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

要对文件执行此操作:

perl -p -e 's/KP_//' < filename.txt

答案 2 :(得分:0)

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