Commande de tri sous unix avec tri numérique

Jai fichier1:

"$lvl=57" "$lvl=20" "$lvl=48" "$lvl=17" "$lvl=58" 

Fichier2 I want:

"$lvl=17" "$lvl=20" "$lvl=48" "$lvl=57" "$lvl=58" 

Trier numériquement le fichier1.

Commentaires

  • Lorsque jexécute un Unix simple sort sur votre File1, sans options, jobtiens votre File2. Que faites-vous différemment? Que laissez-vous en dehors de cette question?

Réponse

Jaime -V –version-sort: il se comporte très bien dans de nombreuses situations mélangeant des chaînes et des nombres

sort -V 

Jutilise cette option très souvent …

Dans un certain sens , ls -v for version-sort ls.

Réponse

Vous devez dire à sort -n de trier la pièce après =:

sort -t = -k 2n 

Commentaires

  • Jai récemment cherché ceci ^^. Mais encore une Q. Que signifie -k2n? Est-ce lié au tri numérique? merci.
  • @KasiyA -k définit une clé de tri. Consultez la page de manuel pour plus de détails. -k2n définit une clé de tri commençant au deuxième champ et se terminant à la fin de la ligne et en fait une clé de tri numérique.

Réponse

Jai trouvé que, vous venez de lancer sort -h, cela fonctionnera. Ils lappellent --human-numberic-sort.

sort -h file1 > file2 

Réponse

utiliser le tri:

sort -n file1 > file2 

-n, –numeric-sort
comparer en fonction de la valeur numérique de la chaîne

 sort -g file1 > file 2 

-g, –general-numeric-sort

Commentaires

  • Non, tout cela les lignes ont le même rang avec sort -n car elles ne commencent ' par un nombre. La raison pour laquelle il les trie est le tri de ligne complète de dernier recours (lexicalement, pas numériquement) effectué pour les lignes avec le même classement. Cela trierait "$lvl=17" avant "$lvl=2".
  • @St é Merci phaneChazelas de lavoir signalé.
  • Pour paraphraser, -n et -g sont redondants ici car lentrée nest pas numérique . Cette réponse est donc trompeuse, doù le vote défavorable (notez également que -g et les options longues sont spécifiques à GNU).
  • mais -g est un bon general-numeric- trier
  • Que ' reste pour trier les valeurs numériques, la différence avec -n est que cest ' ne se limite pas aux entiers décimaux. Cela trierait toujours "$lvl=17" avant "$lvl=2" dans le cadre du tri de dernier recours.

Answer

sort -n est ce que vous voulez utiliser. Il trie lorsque nous trions les nombres. sort -k 2 -n file1

Commentaires

  • Mais lOP veut trier par ordre croissant, qui est la valeur par défaut. Pourquoi suggérez-vous lordre inverse?
  • ce qui précède est correct lorsque les champs sont séparés par des tabulations ou espaces et ne fonctionnera pas dans OP '.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *