Je suis nouveau sur UNIX. Veuillez expliquer la commande sort
. J'ai des doutes concernant le séparateur de champ de tri. Par exemple : sort -k2, 2 nom_fichier
, veuillez clarifier. Veuillez fournir un petit exemple.
Réponse
Trop de publicités?Il y a une erreur de syntaxe dans sort -k2, 2 nom_du_fichier
Il ne devrait pas y avoir d'espace délimiteur dans l'option -k2,2
. De plus, cela éliminerait une source possible de confusion et/ou d'erreur (selon le contenu du fichier qui est trié) d'ajouter soit une option de tri par ordre alphabétique soit une option de tri numérique à la commande afin de rendre explicite comment les choses devraient être triées.
Exemples
cat fichier_non_trié.txt # fichier non trié d'origine
9 8 7
6 55 44
3 2 1
sort -k1 -n fichier_non_trié.txt # exemple 1
3 2 1
6 55 44
9 8 7
sort -k3 -n fichier_non_trié.txt # exemple 2
3 2 1
9 8 7
6 55 44
sort -k1,3 -n fichier_non_trié.txt # exemple 3
3 2 1
6 55 44
9 8 7
sort -k2,3 -n fichier_non_trié.txt # exemple 4
3 2 1
9 8 7
6 55 44
Explication
Par défaut, le délimiteur de champ est la transition de non-blanc à blanc.
KEYDEF -k
est F[.C][OPTS][,F[.C][OPTS]] pour la position de début et de fin, où F est un numéro de champ et C une position de caractère dans le champ. Les deux sont d'origine 1, et la position de fin est par défaut la fin de la ligne.-k1
- premier champ-k3
- troisième champ-k1,3
- commencer au premier champ, finir au troisième champ-k2,3
- commencer au deuxième champ, finir au troisième champ-n
- comparer selon la valeur numérique de la chaîne