Вам нужно /e
в регулярном выражении, чтобы указать 'оценивать'.
Но если вы делаете это, вы делаете оценку, поэтому вы не можете просто больше использовать голые слова. \_1+1
не является допустимым Perl. Вы можете сделать $1+1
, но это даст вам 2
, а не 002
.
Так что вам также нужно sprintf
к нулю.
И пока вы вместо этого используете конечную печать, вы можете использовать -p
вместо -n
.
И получите:
echo XYZ123-123-123x_S6_L001_R1_001.fastq.gz | perl -pe 's/_L(\d{3})/sprintf("_L%03d",$1+1)/e'
Что дает вам:
XYZ123-123-123x_S6_L002_R1_001.fastq.gz