web-dev-qa-db-fra.com

Inverser l'ordre de tri d'un fichier multicolonne dans BASH

J'ai le fichier suivant:

1 2 3
1 4 5
1 6 7
2 3 5
5 2 1

et je veux que le fichier soit trié pour la deuxième colonne mais du plus grand nombre (dans ce cas 6) au plus petit. J'ai essayé avec

sort +1 -2 file.dat

mais cela me donne l'ordre inversé.

Les résultats devraient être:

1 6 7
1 4 5
2 3 5
5 2 1
1 2 3
29
Valerio D. Ciotti
sort -nrk 2,2

fait l'affaire.

n pour le tri numérique, r pour l'ordre inverse et k 2,2 pour la deuxième colonne.

49
Danstahr

Avez-vous essayé -r? De la page de manuel :

-r, --reverse

          reverse the result of comparisons
11
Brian Agnew

Comme mentionné, la plupart des versions de sort ont le -r option si la vôtre n'essaye pas tac:

$ sort -nk 2,2 file.dat | tac 
1 6 7
1 4 5
2 3 5
5 2 1
1 2 3

$ sort -nrk 2,2 file.dat 
1 6 7
1 4 5
2 3 5
5 2 1
1 2 3

tac - concaténer et imprimer des fichiers en sens inverse

3
Chris Seymour