awk split numbers

I would like to split a string of numbers "1-2,4-13,16,19-20,21-25,31-32" and output these with awk into

-dFirstPage=1 -dLastPage=2 file.pdf -dFirstPage=4 -dLastPage=13 file.pdf -dFirstPage=16 -dLastPage=16 file.pdf file.pdf -dFirstPage=19 -dLastPage=20 file.pdf -dFirstPage=21 -dLastPage=25 file.pdf -dFirstPage=31 -dLastPage=32 file.pdf

When i use the script below it unsorts it into

-dFirstPage=19 -dLastPage=20 file.pdf -dFirstPage=21 -dLastPage=25 file.pdf -dFirstPage=31 -dLastPage=32 file.pdf -dFirstPage=1 -dLastPage=2 file.pdf -dFirstPage=4 -dLastPage=13 file.pdf -dFirstPage=16 -dLastPage=16 file.pdf 
awk -v p="1-2,4-13,16,19-20,21-25,31-32" -v dn="file.pdf" 'BEGIN{ORS=" "; split(p,t,",");for (i in t) if(t ~ /-/) {split(t,t1,"-"); print  "-dFirstPage=" t1[1] ,"-dLastPage=" t1[2], dn } else {print "-dFirstPage=" t ,"-dLastPage=" t, dn }}'

What ist wrong with the script?

Hi

awk -v p="1-2,4-13,16,19-20,21-25,31-32" -v dn="file.pdf" 'BEGIN{ORS=" "; x=split(p,t,",");for (i=1;i<=x;i++) if(t ~ /-/) {split(t,t1,"-"); print  "-dFirstPage=" t1[1] ,"-dLastPage=" t1[2], dn } else {print "-dFirstPage=" t ,"-dLastPage=" t, dn }}'

Guru.

1 Like

impeccable on my linux mawk 1.3.3!

here is corrected one

awk -v p="1-2,4-13,16,19-20,21-25,31-32" -v dn="file.pdf" 'BEGIN{ORS=" ";n=split(p,t,",");for (i=1;i<=n;i++) if(t ~ /-/) {split(t,t1,"-"); print  "-dFirstPage=" t1[1] ,"-dLastPage=" t1[2], dn } else {print "-dFirstPage=" t ,"-dLastPage=" t, dn }}'
1 Like