J'ai un fichier de deux colonnes et un 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 age
(dans la deuxième colonne).
Le résultat doit afficher le name
plus jeune ainsi que le name
deuxième plus jeune, etc.
Toutes les suggestions pour un shell ou un script bash.
Réponses:
Vous pouvez utiliser la
sort
commande :Par exemple:
la source
-h
au lieu de-n
triera les valeurs lisibles par l'homme comme2G
ou3K
ainsi que les nombres séparés par des virgules, par exemple1,234.5
LC_ALL=C
pour obtenir l'ordre de tri traditionnel qui utilise des valeurs d'octets natives." (pour le cas de correspondance de chaîne sans-n
)sort -t$'\t' -k2 -n FILE
Solution:
sort -k 2 -n filename
écrit plus verbalement comme:
sort --key 2 --numeric-sort filename
Exemple:
Explication:
-k # - cet argument spécifie la première colonne qui sera utilisée pour trier. (notez que la colonne ici est définie comme un champ délimité par des espaces; l'argument
-k5
sera trié 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 "tri numérique" signifiant que la colonne doit être interprétée comme une ligne de nombres, au lieu de texte.
Plus:
Les autres options courantes incluent:
Il existe d'autres options, mais ce sont les plus courantes et les plus utiles que j'utilise souvent.
la source
-t
était une véritable économie de vie !! lorsque vos colonnes ont des espaces et des colonnes diffèrent par un caractère donné comme,
ou un ongletPour les valeurs séparées par des tabulations, le code ci-dessous peut être utilisé
-r peut être utilisé pour obtenir des données dans l'ordre décroissant.
-n pour le tri numérique
-k, --key = POS1 [, POS2] où k est la colonne du fichier
Pour l'ordre décroissant ci-dessous est le code
la source
Utilisez
sort
.la source