J'ai un fichier de deux colonnes et n
nombre de lignes.
la colonne 1 contient names
et la colonne2 age
.
Je souhaite trier le contenu de ce fichier par ordre croissant en fonction de la variable age
(dans la deuxième colonne).
Le résultat devrait afficher la name
de la plus jeune personne avec name
, puis la deuxième personne la plus jeune, etc.
Toute suggestion pour un script à une ligne Shell ou bash.
Vous pouvez utiliser la commande sort
:
sort -k2 -n yourfile
-n
,--numeric-sort
comparer en fonction de la valeur numérique 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 verbalement é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 à utiliser pour le tri. (notez que la colonne est définie ici comme un champ délimité par des espaces; l'argument -k5
sera trié en commençant par le cinquième () de chaque ligne, pas le cinquième caractère de chaque ligne)
- n - cette option spécifie un "tri numérique", ce qui signifie que la colonne doit être interprétée comme une rangée de chiffres et non de texte.
Les autres options courantes incluent:
Il existe d'autres options, mais ce sont les plus courantes et les plus utiles, que j'utilise souvent.
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 tri numérique
Par ordre décroissant, le code est le suivant
sort -t$'\t' -k2 -rn
Utilisez sort
.
sort ... -k 2,2 ...