Com os dois arquivos simples a seguir:
a.txt
1 a
2 b
5 c
b.txt
2 x
4 y
5 z
O comando a seguir não se comporta como esperado:
$ join -a 1 -a 2 -e 0 a.txt b.txt
1 a
2 b x
4 y
5 c z
Eu esperaria a opção -e 0
de preencher os valores ausentes com zeros. No entanto, o seguinte funciona:
$ join -a 1 -a 2 -e 0 -o auto a.txt b.txt
1 a 0
2 b x
4 0 y
5 c z
Lendo a documentação de $ man join
, não vejo conexão entre -o
e -e
isso tornaria o comportamento acima significativo. Em vez disso, acho enganoso que um inútil -o auto
precise ser inserido no meu comando para -e 0
funcionar.
Existe uma explicação? Ou devo arquivar isso como um bug para o coreutils?
Bem, isso foi arquivado como um relatório formal lá . A resposta é que existe uma conexão entre
-e
e-o
, que é explicada nainfo join
página. Um patch foi lançado para esclarecer também naman info
página.