Thank you Zaxxon. I have tried to make it more generic. May be following can help OP.
awk --re-interval '{match($0,/[A-Z]=\"[0-9]{4}\-[0-9]{2}\-[0-9]{2}\"/);val3=substr($0,RSTART,RLENGTH)};{match($0,/[A-Z]=\"[0-1]{12}\"/);val2=substr($0,RSTART,RLENGTH);{match($0,/[A-Z]=\"[0-9]{7}\"/);val4=substr($0,RSTART,RLENGTH)};{match($0,/[A-Z]=\"[a-zA-Z]+\"/);val5=substr($0,RSTART,RLENGTH);print "<Subject " val2 OFS val4 OFS val3 OFS val5 ">"}}' Input_file
Output will be as follows.
<Subject D="010101010101" B="1039502" C="2015-06-30" A="I">
Now in above solution I have assumed that pattern of Input_file will be like [A-Z]="[A-Za-z]"
then [A-Z]=[0-9] till 7 digits
then [A-Z]=[0-9] 4 digits -[0-9] 2 digits - [0-9] 2 digits
like YYYY-MM-DD
format and finally [A-Z]=[0-1] till 12 digits
. So if all Input_file is having mentioned syntax input then above solution may help OP.
EDIT: Adding a non one-liner form of solution as follows.
awk --re-interval '{
match($0,/[A-Z]=\"[0-9]{4}\-[0-9]{2}\-[0-9]{2}\"/);
val3=substr($0,RSTART,RLENGTH)};
{
match($0,/[A-Z]=\"[0-1]{12}\"/);
val2=substr($0,RSTART,RLENGTH);
{
match($0,/[A-Z]=\"[0-9]{7}\"/);
val4=substr($0,RSTART,RLENGTH)};
{
match($0,/[A-Z]=\"[a-zA-Z]+\"/);
val5=substr($0,RSTART,RLENGTH);
print "<Subject " val2 OFS val4 OFS val3 OFS val5 ">"
}
}
' Input_file
Thanks,
R. Singh