我有一个奇怪的情况,我想删除除了非常长的无限字符串内的子串的第一个匹配。我在这里找到了一些类似的主题,但没有一个像我一样。
为了简单起见,这里有一些字符串之前和之后的sudo。 我有一个不受限制的文件,其中“c”可能是数千个随机字符,但“bbb”是一个唯一的字符串:
aaabbbbbbccccccbbbccccccbbbccccccaaa
我想删除除第一个bbb以外的所有内容:
aaabbbccccccccccccccccccaaa
此外,我希望能够将其用作我可以通过的perl脚本:
cat file.in | something | perl -pe 's/bbb//g' | somethingelse > file.out
但是,与上面的例子不同,我希望第一次出现“bbb”完整。“
这似乎应该相当容易,但它让我感到难过
任何想法?
提前谢谢!
答案 0 :(得分:5)
也许以下内容会有所帮助:
use strict;
use warnings;
my $string = 'aaabbbbbbccccccbbbccccccbbbccccccaaa';
$string =~ s/(?<=bbb).*?\Kbbb//g;
print $string;
输出:
aaabbbccccccccccccccccccaaa
答案 1 :(得分:3)
my $string = 'aaabbbbbbccccccbbbccccccbbbccccccaaa';
my $seen;
sub first {
$seen++;
return $_[0] if $seen eq 1;
return '';
}
$string =~ s/(bbb)/first($1)/ge;
say $string;
输出:
aaabbbccccccccccccccccccaaa