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
sort -k 2 -n filename
plus verbeusement écrit comme:
sort --key 2 --numeric-sort filename
$ cat filename A 12 B 48 C 3 $ sort --key 2 --numeric-sort filename C 3 A 12 B 48
-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.
Parmi les autres options courantes, citons:
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