#!/bin/bash
g='XABC
XA-BC8D
X-ABC
XB72D-
X123
XAB
XABC-123
XA--BC'
awk '/^[Xx][[:upper:][:digit:]-]{3,6}$/ && /.[[:upper:]]/ {val=$0; sub("-","",val); if (val ~ /^[Xx][[:upper:][:digit:]]+$/) {print $0;}}' <<< "$g"
