我有一个包含以下数据的文件:
KP_site1
KP_site2
KP_site3
我想要关注输出:
site1
site2
site3
如何在perl regex中实现这一目标?
答案 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