web-dev-qa-db-fra.com

Comment utiliser awk trier par colonne 3

J'ai un fichier (user.csv) comme celui-ci

ip,hostname,user,group,encryption,aduser,adattr

vouloir imprimer tous les types de colonnes par utilisateur,

J'ai essayé awk -F ":" '{print|"$3 sort -n"}' user.csv, ça ne marche pas.

75
user2452340

Que diriez-vous de simplement sort.

sort -t, -nk3 user.csv

  • -t, - définit votre délimiteur comme ,.

  • -n - vous donne un tri numérique. Ajouté depuis que vous l'avez ajouté dans votre tentative. Si votre champ utilisateur est uniquement du texte, vous n'en avez pas besoin.

  • -k3 - définit le champ (clé). l'utilisateur est le troisième champ.

138
jaypal singh
  1. Utilisez awk pour mettre l'ID utilisateur devant.
  2. Trier
  3. Utilisez sed pour supprimer l'ID utilisateur en double, en supposant que les ID utilisateur ne contiennent aucun espace.

    awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
    
13
user3781670
awk -F, '{ print $3, $0 }' user.csv | sort -nk2 

et pour ordre inverse

awk -F, '{ print $3, $0 }' user.csv | sort -nrk2 
7
vsingh

Vous pouvez choisir un délimiteur. Dans ce cas, j’ai choisi deux points et imprimé la première colonne en triant par ordre alphabétique:

awk -F\: '{print $1|"sort -u"}' /etc/passwd
7

essaye ça -

awk '{print $0|"sort -t',' -nk3 "}' user.csv

OR

sort -t',' -nk3 user.csv
5
VIPIN KUMAR