49 votes

GNU trier en respectant la casse

El sort dans Ubuntu 10.04 (Lucid), le tri est toujours insensible à la casse, tout comme si vous spécifiez --ignore-case à ce sujet.

The two sort just give the same result: 

echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case

Mais parfois, je veux trier en fonction de la casse, de sorte que les lettres majuscules viennent en premier, puis les lettres minuscules. Est-ce possible ?

42voto

Ignacio Vazquez-Abrams Points 107432

Remplace l'ordre de collationnement.

echo -e "c\nb\nB\na" | LC_COLLATE=C sort

19voto

Damian Powell Points 315

Il est intéressant de noter qu'un autre ordre de tri est disponible comme ceci :

echo -e "c\nb\nB\na" | LC_COLLATE=C sort --ignore-case

qui place la lettre majuscule avant la lettre minuscule correspondante.

Voici une comparaison de leurs résultats (j'ai ajouté "d" et "D") dans la base de données de la Commission européenne. en_US.UTF-8 locale (sauf si elle est surchargée) :

  1. echo -e "d\nD\nc\nb\nB\na" | sort
  2. echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
  3. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
  4. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case

Sortie :

1   2   3   4
-   -   -   -
a   a   B   a
b   b   D   B
B   B   a   b
c   c   b   c
d   d   c   D
D   D   d   d

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X