Se você puder se contentar com uma correspondência de string em vez de uma correspondência de expressão regular
awk 'BEGIN {RS="---\n"; ORS=""} {print > sprintf("xx%02d", NR)}' in
Com o GNU awk (pelo menos na v4.0.1) é possível usar um regex para RS
, por exemplo,
gawk 'BEGIN {RS="-+\n"; ORS=""} {print > sprintf("xx%02d", NR)}' in