Que tal:
awk -F'[ \t,]+' '{a=a$1"\t"$2"\t"$3"\n"; b=b$1"\t"$2"\t"$4"\n"} END {print a; print b}' data.txt
Aqui, tratamos um ou mais espaços, tabulações ou vírgulas como um separador de campos. Então, em cada linha, construímos a saída. Finalmente, imprimimos os resultados. Este é um forro bastante sujo; por exemplo, ele tem que ler o arquivo inteiro antes de imprimir qualquer coisa, então, para arquivos grandes, ele ficará ruim na memória, mas para arquivos pequenos ele deve funcionar.
Da sua entrada, isso deve resultar em:
EXCHANGE_ID : 192
EXCHANGE_DTTM : 2015-06-11+02:18:40+0000
PART_NAME : MRT
PART_TRANS_ID : 123
M_NAME : FAILED
M_DTTM : 2015-06-11T02:18:40+0000
EXCHANGE_ID : 410
EXCHANGE_DTTM : 2015-06-11+02:12:28+0000
PART_NAME : LR04
PART_TRANS_ID : JAS04
M_NAME : FAILED
M_DTTM : 2015-06-11T02:12:28+0000
Se você quiser que os campos sejam bem espaçados, você pode adicionar o sprintf à chamada assim:
awk -F'[ \t,]+' '{label=sprintf("'%-10s'",$1); a=a""label"\t"$2" "$3"\n"; b=b""label"\t"$2" "$4"\n"} END {print a; print b}' data.txt
Isto dá a saída mais bonita de:
EXCHANGE_ID : 192
EXCHANGE_DTTM : 2015-06-11+02:18:40+0000
PART_NAME : MRT
PART_TRANS_ID : 123
M_NAME : FAILED
M_DTTM : 2015-06-11T02:18:40+0000
EXCHANGE_ID : 410
EXCHANGE_DTTM : 2015-06-11+02:12:28+0000
PART_NAME : LR04
PART_TRANS_ID : JAS04
M_NAME : FAILED
M_DTTM : 2015-06-11T02:12:28+0000