J'ai un fichier (user.csv) comme celui-ci
ip,hostname,user,group,encryption,aduser,adattr
voulez imprimer toutes les colonnes triées par utilisateur,
J'ai essayé awk -F ":" '{print|"$3 sort -n"}' user.csv, ça ne marche pas.
J'ai un fichier (user.csv) comme celui-ci
ip,hostname,user,group,encryption,aduser,adattr
voulez imprimer toutes les colonnes triées par utilisateur,
J'ai essayé awk -F ":" '{print|"$3 sort -n"}' user.csv, ça ne marche pas.
Réponses:
Que diriez-vous juste sort.
sort -t, -nk3 user.csv
où
-t,- définit votre délimiteur comme ,.
-n- vous donne un tri numérique. Ajouté depuis que vous l'avez ajouté lors de 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.
sort -t, -nk3 filename.csv | sort -t, -nk6- d'abord il triera par colonne 3, puis triera par colonne 6 afin que la colonne 6 soit triée correctement jusqu'au bout et pour toutes les lignes où la colonne 6 est la même, celles-ci seront triées par colonne 3 .
sort -t ',' -k3,3n -k6,6nsera meilleur. -k3utilisera la colonne 3 et le reste de la ligne.
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/^.* //'
sortsait déjà comment trier selon une colonne particulière, mais cette technique - connue sous le nom de transformée de Schwartz - est utile lorsque le champ sur lequel vous souhaitez trier n'est pas trivialement une colonne bien définie.
Vous pouvez choisir un délimiteur, dans ce cas, j'ai choisi un deux-points et imprimé la colonne numéro un, en triant par ordre alphabétique:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
essaye ça -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
OU
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
Cela devrait fonctionner
sort -t, -k3 file