Installé avec le paquet coreutils
Voir aussi : cut et uniq
Afficher la version de la commande sort
sort --version
ou
apt-cache policy coreutils
Le tri alphanumérique des débuts de lignes ne se fait pas selon l’ordre ASCII, mais selon l’ordre suivant :
- [0-9]
- [a-z]
- [A-Z]
1 2 a A b B
Tri alphanumérique des débuts de lignes d’un fichier
sort filename
Tri alphanumérique inversé des débuts de lignes d’un fichier
sort -r filename
Rediriger la sortie vers un fichier
sort filename > outputfilename
ou
sort filename -o outputfilename
Trier en fonction d’un champ défini
sort -k N filename
Champ trié par ordre alphabétique (dictionary-order) :
sort -k Nd filename
Champ trié par ordre numérique (numeric-sort) :
sort -k Nn filename
ex :
Soit le fichier test.txt suivant :
1.17 truc mp3 1.26 machin mp4 1.35 bidule mp3 1.44 chanson2 mp3 1.53 film1 mp4 1.62 film2 mp4 1.71 chanson1 mp3
Tri en fonction de la 3ème colonne alphabétiquement :
# sort -k 3d test.txt
1.17 truc mp3
1.35 bidule mp3
1.44 chanson2 mp3
1.71 chanson1 mp3
1.26 machin mp4
1.53 film1 mp4
1.62 film2 mp4
Tri en fonction de la 3ème colonne alphabétiquement et second tri numérique en fonction du 4ème caractère du champ 1 :
# sort -k 3d -k 1.4n test.txt
1.71 chanson1 mp3
1.44 chanson2 mp3
1.35 bidule mp3
1.17 truc mp3
1.62 film2 mp4
1.53 film1 mp4
1.26 machin mp4
Définir le séparateur de champs
sort -t'separateur' filename
ex :
# sort -t':' -k 7d -k 3n /etc/passwd
root:x:0:0:root:/root:/bin/bash
adminsys:x:1000:1000:adminsys,,,:/home/adminsys:/bin/bash
lightdm:x:110:117:Light Display Manager:/var/lib/lightdm:/bin/false
speech-dispatcher:x:117:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
hplip:x:119:7:HPLIP system user,,,:/var/run/hplip:/bin/false
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
sync:x:4:65534:sync:/bin:/bin/sync
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Trier seulement une partie d’une ligne
sort -k POS1,POS2 filename
ex :
Ci-dessous, on ne trie que du 2ème au 3ème caractères de la 2ème colonne délimitée par un tiret haut.
# sort -t'-' -k 2.2,2.3 test.txt
999-fdr-bbb
666-0hg-bbb
777-zpo-bbb
888-art-bbb
Ignorer les blancs en début de lignes
sort -b filename
Afficher si le fichier testé est trié ou pas
sort -c filename
Renvoie la première ligne non triée.
Retourne 0 si le fichier est trié.
Retourne 1 si le fichier n’est pas trié.
sort -C filename
Ne renvoie pas la première ligne non triée.
Retourne 0 si le fichier est trié.
Retourne 1 si le fichier n’est pas trié.
ex :
# sort -c test1.txt sort: test1.txt:2: disorder: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin # echo $? 1 # sort -c test2.txt # echo $? 0 # sort -C test1.txt # echo $? 1 # sort -C test2.txt # echo $? 0
Trier plusieurs fichiers simultanément
find -name REGEX -print0 | sort --files0-from=-
ex :
# find -name "test?.txt" -print0 | sort -c --files0-from=-
Trier les fichiers du répertoire courant par taille
ls -lh | sort -k 5 -h
Supprimer tous les doublons (même non consécutifs) avant le tri
sort -u filename