my $count = 1; while ( ) { if ( m/^\^status/ ) { my @f = split; $f[17] = $count++; $_ = join( ' ', @f ) . "\n"; } print; } __DATA__ ^status f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 123 123 ^status f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 345 123 #### s/\d+\s+(\d+)$/$count $1/;