IFS=X eval set 0 \{-13..{31,29,31,30,31,30,31,31,30,31,30,31}} 0 0 set ${@/-*/0} printf %\ 3.d ${@:13}|while read -n21 i;do [[ $i$j =~ ^.{,20}[0-9] ]];k=$BASH_REMATCH [[ $i$j =~ [0-9] ]]&&echo "$k" j=$i done