Commandes Linux : sort

SORT

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 :

  1. [0-9]
  2. [a-z]
  3. [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
Fermer le menu
%d blogueurs aiment cette page :