web-dev-qa-db-fra.com

Comment trier un fichier sous Unix à la fois par ordre alphabétique et numérique sur différents champs?

S'il vous plaît, ne pensez pas que c'est une répétition de la question "Tri des données alphanumériques sous Unix" ... J'ai regardé les autres réponses, et je pense que mon cas est un peu différent!

J'ai des données comme celle-ci:

A    192
D    112
D    188
C    091
A    281
B    919

... Et je veux trier la première colonne 1 (par ordre alphabétique), puis par colonne 2 (par ordre numérique). J'ai essayé d'utiliser:

sort -n -k1,2

... Mais cela m'a donné un tri correct pour le premier champ, mais ensuite un mauvais tri pour le deuxième champ (1000,1002,1003,10,1 ... au lieu de 1,10,1000,1002,1003).

Quelqu'un peut-il suggérer comment trier ces deux colonnes comme je le voudrais?

31
jake9115

Essayez d'utiliser comme ceci: -

sort -k1,1 -k4,4n
  • -n: effectue le tri du programme en fonction de la valeur numérique
  • -k opts: trie les données/champs en utilisant le numéro de colonne donné. Par exemple, l'option -k 2 a fait trier le programme en utilisant le second
    colonne de données. L'option -k 3,3n -k 4,4n trie chaque colonne. Première
    il triera la 3ème colonne puis la 4ème colonne.
39
Rahul Tripathi

Cela devrait fonctionner:

sort -t "," -k1,1 -k2n,2 file
6
jenish