Qual implementação de join
você está usando? Com join (GNU coreutils) 5.97
, posso usar
[0 1021] ~/temp/jointest % join -a1 -a2 jointest1.txt jointest2.txt
a 1 10
b 2 11
c 12
d 4 13
e 5
e a junção "simples" também funciona (mas omite c e e). Existe uma opção -e
que supostamente permite escolher o marcador para campos vazios, mas parece estar quebrado na minha versão e preenche apenas o caso e, não o caso c.