web-dev-qa-db-fra.com

unix trier par ordre décroissant

Je veux trier un fichier limité par onglets dans l'ordre décroissant en fonction du 5ème champ des enregistrements.

J'ai essayé

sort -r -k5n filename

Mais ça n'a pas marché.

51
user1598776

La présence de l'option n attachée à l'option -k5 provoque le global -r option à ignorer pour ce champ. Vous devez spécifier à la fois n et r au même niveau (globalement ou localement).

sort -t $'\t' -k5,5rn

ou

sort -rn -t $'\t' -k5,5
49
Alan Curry

Si vous voulez seulement trier seulement sur le cinquième champ, utilisez -k5,5.

Aussi, utilisez le -t _ commutateur de ligne de commande pour spécifier le délimiteur à tab. Essaye ça:

sort  -k5,5 -r -n -t \t filename

ou si ce qui précède ne fonctionne pas (avec le tab), ceci:

sort  -k5,5 -r -n -t $'\t' filename

Le page de manuel pour le tri indique:

-t, --field-separator = SEP utilise SEP au lieu de transition non vide à vide)

Enfin, cette SO question Tri Unix avec séparateur d'onglets pourrait être utile.

13
Levon

Pour lister les fichiers en fonction de leur taille en ordre croissant.

find ./ -size +1000M -exec ls -tlrh {} \; |awk -F" " '{print $5,$9}'  | sort -n\
1
user2550384