Use o awk com dois arrays associativos. Algo parecido com isto:
awk -F, '
/^</{sub("< *","",$1);old[$1]=$2}
/^>/{sub("> *","",$1);new[$1]=$2}
END{ for(k in old) print k,old[k],new[k] }
'
Você pode concatenar tudo em uma linha separada por espaços, se preferir - mas eu gosto de várias linhas. ;) Aqui está uma amostra:
sauer@humpy:~$ cat file
< a,b,c
> a,d,e
gibberish
< 1,2,3
> 1,4,5
sauer@humpy:~$ awk -F, '
/^</{sub("< *","",$1);old[$1]=$2}
/^>/{sub("> *","",$1);new[$1]=$2}
END{ for(k in old) print k,old[k],new[k] }
' < file
a b d
1 2 4
Ah, se você tem um antigo awk, o "< *"
pode precisar ser um padrão fixo em vez de um regex, então perca o *
e coloque a quantidade literal de espaços após o indicador direcional.