perl -MO=Deparse -nle "$x++ if 0==$.%4;$a[$x].=$_}{for(@a){next unless/Range/;s/ST/ST,/;/\s(\d+)(\w) - \d+(\w)\W/;$n=$1;for $l(qq($2)..qq($3)){print s/\(.*\)/$n$l, /r}}" add-data.txt BEGIN { $/ = "\n"; $\ = "\n"; } LINE: while (defined($_ = readline ARGV)) { chomp $_; ++$x if 0 == $. % 4; $a[$x] .= $_; } { foreach $_ (@a) { next unless /Range/; s/ST/ST,/; /\s(\d+)(\w) - \d+(\w)\W/; $n = $1; foreach $l ("$2" .. "$3") { print s/\(.*\)/$n$l, /r; } } } -e syntax OK