commande de tri sous Unix avec tri numérique


10

J'ai file1:

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

File2 je veux:

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

Type de fichier essentiellement numérique 1.


Lorsque je lance un Unix simple sortsur votre File1, sans aucune option, j'obtiens votre File2. Que faites-vous différemment? Que laissez-vous en dehors de cette question?
Scott

Réponses:


17

J'aime -V --version-sort: il se comporte très bien pour de nombreuses situations mêlant chaînes et nombres

sort -V

J'utilise cette option très souvent ...

Dans une certaine direction, ls -vpour le tri des versions ls.


10

Vous devez dire sort -nde trier la pièce après =:

sort -t = -k 2n

Je regardais récemment ce ^^. Mais encore un Q. Que faire -k2n? Est-ce lié au tri numérique? Merci.
αғsнιη

2
@KasiyA -kdéfinit une clé de tri. Voir la page de manuel pour plus de détails. -k2ndé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.
Stéphane Chazelas

0

utiliser le tri:

sort -n file1 > file2

-n, --numeric-sort
comparer selon la valeur numérique de la chaîne

 sort -g file1 > file 2

-g, --general-numeric-sort


3
Non, toutes ces lignes ont le même classement sort -ncar elles ne commencent pas par un nombre. La raison pour laquelle il les trie est le tri en ligne de dernier recours (lexicalement et non numériquement) effectué pour les lignes avec le même classement. Cela trierait "$lvl=17"avant "$lvl=2".
Stéphane Chazelas

@ StéphaneChazelas merci de l'avoir signalé.
Hackaholic

Pour paraphraser, -net -gsont redondants ici car l'entrée n'est pas numérique. Cette réponse est donc trompeuse, d'où le downvote (notez également que -gles options longues sont spécifiques à GNU).
Stéphane Chazelas

mais -g est un bon tri numérique général
Hackaholic

C'est toujours pour trier les valeurs numériques, la différence avec -nest que ce n'est pas limité aux entiers décimaux. Cela serait toujours trié "$lvl=17"auparavant "$lvl=2"dans le cadre du tri de dernier recours.
Stéphane Chazelas

0

J'ai trouvé que, vous venez de courir sort -h, cela fonctionnera. Ils l'appellent --human-numberic-sort.

sort -h file1 > file2

-1

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


2
Mais l'OP veut trier par ordre croissant, ce qui est le défaut. Pourquoi proposez-vous l'ordre inverse?
G-Man dit `` Réinstalle Monica '' le

ce qui précède est correct lorsque les champs sont séparés par des tabulations ou des espaces et ne fonctionnera pas dans le cas d'OP.
αғsнιη
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.