Tri des données en fonction de la deuxième colonne d’un fichier

J’ai un fichier de deux colonnes et n nombre de lignes.

la colonne 1 contient les names et l’ age colonne2.

Je souhaite sortinger le contenu de ce fichier par ordre croissant en fonction de l’ age (en seconde colonne).

Le résultat devrait afficher le name de la personne la plus jeune avec son name , puis la deuxième personne la plus jeune, etc.

Toutes les suggestions pour un shell ou un script bash.

Vous pouvez utiliser la commande de sort :

 sort -k2 -n yourfile 

-n , --numeric-sort compare en fonction de la chaîne

Par exemple:

 $ cat ages.txt Bob 12 Jane 48 Mark 3 Tashi 54 $ sort -k2 -n ages.txt Mark 3 Bob 12 Jane 48 Tashi 54 

Solution:

sort -k 2 -n filename

plus verbeusement écrit comme:

sort --key 2 --numeric-sort filename


Exemple:

 $ cat filename A 12 B 48 C 3 $ sort --key 2 --numeric-sort filename C 3 A 12 B 48 

Explication:

  • -k # – cet argument spécifie la première colonne qui sera utilisée pour sortinger. (Notez que la colonne ici est définie comme un champ délimité par des espaces; l’argument -k5 sera -k5 en commençant par le cinquième champ de chaque ligne, pas le cinquième caractère de chaque ligne)

  • -n – cette option spécifie un “sorting numérique”, ce qui signifie que cette colonne doit être interprétée comme une ligne de nombres au lieu de texte.


Plus:

Parmi les autres options courantes, citons:

  • -r – cette option inverse l’ordre de sorting. Il peut aussi être écrit comme – inverse .
  • -i – Cette option ignore les caractères non imprimables. Il peut également être écrit sous la forme –ignore-non-printing .
  • -b – Cette option ignore les espaces vides, ce qui est pratique car des espaces sont utilisés pour déterminer le nombre de lignes. Il peut également être écrit comme –ignore-Leading-Blanks .
  • -f – Cette option ignore la casse des lettres. “A” == “a”. Il peut aussi être écrit comme –ignore-case .
  • -t [nouveau séparateur] – Cette option permet au prétraitement d’utiliser un opérateur autre que de l’espace. Il peut également être écrit comme séparateur de champs.

Il y a d’autres options, mais ce sont les plus courantes et les plus utiles que j’utilise souvent.

Utilisez un sort

 sort ... -k 2,2 ... 

Pour les valeurs séparées par des tabulations, le code ci-dessous peut être utilisé

 sort -t$'\t' -k2 -n 

-r peut être utilisé pour obtenir des données dans l’ordre décroissant.
-n pour le sorting numérique
Pour l’ordre décroissant ci-dessous est le code

 sort -t$'\t' -k2 -rn