Seria mais elegante fazer a coisa toda em awk , mas se você quiser algo rápido e sujo, basta definir o separador awk do registro igual ao separador grep group - e, em seguida, imprimir o campos delimitados por espaços em branco desejados na ordem desejada:
grep -C1 XYZ file | awk -vRS='\n--' '{print $1, $NF, $3, $2}'
ABCD1 1234597890 12345 1234
DEFG2 0987654321 56789 5678