De acordo com o manual comm , "Antes de 'comm' poder ser usado, os arquivos de entrada devem ser classificados usando a seqüência de intercalação especificada pela localidade 'LC_COLLATE'."
E o sort manual: "A menos que seja especificado de outra forma, todas as comparações usam a sequência de intercalação de caracteres especificada pela localidade 'LC_COLLATE'.
Portanto, e um teste rápido confirma, a LC_COLLATE order comm expects é fornecida pela ordem padrão de sort , tipo de dicionário.
sort pode classificar arquivos de várias maneiras:
-
-d: ordem do dicionário - ignora tudo, menos o espaço em branco e alfanuméricos. -
-g: numérico geral - alfa, depois números negativos e, em seguida, positivos. -
-h: legível para humanos - negativo, alfa, positivo. %código% -
n < nk = nK < nM < nG: numérico - negativo, alfa, positivo.-n,k,M, etc. não são especiais. -
G: versão - positiva, limite, inferior, negativo. %código% -
-V: não diferencia maiúsculas de minúsculas. -
1 < 1.2 < 1.10: Aleatório - embaralhe a entrada. -
-f: Reverse - normalmente usado com-R
Existem outras opções, é claro, mas estas são as que você provavelmente verá ou precisará.
Seu teste mostra que a ordem de classificação padrão é provavelmente -r , ordem do dicionário.
d | g | h | n | V
------+-------+-------+-------+-------
1 | a | -1G | -10 | 1
-1 | A | -1k | -5 | 1G
10 | z | -10 | -1 | 1g
-10 | Z | -5 | -1g | 1k
1.10| -10 | -1 | -1G | 1.2
1.2 | -5 | -1g | -1k | 1.10
1g | -1 | a | a | 5
1G | -1g | A | A | 10
-1g | -1G | z | z | A
-1G | -1k | Z | Z | Z
1k | 1 | 1 | 1 | a
-1k | 1g | 1g | 1g | z
5 | 1G | 1.10 | 1G | -1
-5 | 1k | 1.2 | 1k | -1G
a | 1.10 | 5 | 1.10 | -1g
A | 1.2 | 10 | 1.2 | -1k
z | 5 | 1k | 5 | -5
Z | 10 | 1G | 10 | -10