Selon le comm
manuel, "Avant que `comm' puisse être utilisé, les fichiers d'entrée doivent être triés en utilisant la séquence de classement spécifiée par la locale `LC_COLLATE'."
Et le sort
manual :"Sauf indication contraire, toutes les comparaisons utilisent la séquence de classement de caractères spécifiée par la locale `LC_COLLATE'.
Par conséquent, et un test rapide le confirme, le LC_COLLATE
commander comm
attend est fourni par le sort
l'ordre par défaut de, tri par dictionnaire.
sort
peut trier les fichiers de différentes manières :
-d
:Ordre du dictionnaire - ignore tout sauf les espaces et les caractères alphanumériques.-g
: numérique général – alphanumérique, puis nombres négatifs, puis positifs.-h
:lisible par l'homme - négatif, alpha, positif.n < nk = nK < nM < nG
-n
:Numérique - négatif, alpha, positif.k
,M
,G
, etc. ne sont pas spéciaux.-V
:Version - positif, majuscules, inférieur, négatif.1 < 1.2 < 1.10
-f
:Insensible à la casse.-R
: Aléatoire - mélanger l'entrée.-r
:Inverse - généralement utilisé avec l'un desdghnV
Il existe d'autres options, bien sûr, mais ce sont celles que vous verrez ou dont vous aurez probablement besoin.
Votre test montre que l'ordre de tri par défaut est probablement -d
, ordre du dictionnaire.
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