我有一个包含以下数据的文件:
KP_site1
KP_site2
KP_site3
我想要以下输出:
site1
site2
site3
如何在 perl 正则表达式中实现这一点?
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
例如,请参见下面的正则表达式
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
操作员很容易=~
:
$_ =~ s/^KP_//;
根据您实际使用的任何变量进行自定义。这是就地修改。
处理数组:
map { $_ =~ s/KP_//; $_ } @array;
要对文件执行此操作:
perl -p -e 's/KP_//' < filename.txt