Inverser une commande uniq sur bash

J’essaie de trouver le nombre de fois qu’un identifiant d’email particulier se répète. Piping uniq -c avec la sortie je reçois 420 aol.com mais j’ai besoin de aol.com 420 comment faire car uniq -c s’applique comme un nombre de préfixes

Vous pouvez diriger la sortie vers awk :

 ssortingng='420 aol.com' echo "$ssortingng" | awk '{print $2,$1}' aol.com 420 

Par défaut, awk sépare chaque champ par des espaces.

  • 420 est le 1er champ $1

  • aol.com est le 2e champ $2 .

Cela indique simplement à awk d’imprimer chacun de ces champs dans l’ordre inverse. {print $2,$1}

Si vous avez une liste d’adresses électroniques telles que:

 $ cat emails.txt [email protected] [email protected] [email protected] 

et vous avez besoin du nombre de leurs domaines, en utilisant awk:

 $ awk -F@ '{a[$2]++} END {for(i in a) print i, a[i]}' emails.txt aol.com 2 yahoo.com 1 

Les enregistrements sont générés sans ordre particulier. Si vous utilisez Gnu awk, les enregistrements peuvent être commandés en utilisant PROCINFO["sorted_in"]="@val_num_asc"; (voir ici des options) au début du bloc BEGIN .