Réponses:
Je l'ai compris; une des uniq
options est -c
, pour "préfixer les lignes par le nombre d'occurrences":
$ uniq -c
sort | uniq
A \ A \ A \ B \ A \ CC
, la sortie de juste uniq -c
s'afficherait A 3
et s'afficherait plus tard A 1
. Le tri en premier garantira que toutes les lignes identiques sont regroupées
Je viens de venir ici avec un problème similaire. De là, j'ai réussi à mettre sur pied une commande légèrement plus avancée, qui, je l'espère, est utile pour les autres.
Comme Steven D l'a dit dans les commentaires ci-dessus uniq
ne compte que les lignes de répétition adjacentes, vous devez donc d'abord trier les lignes. Après cela, nous trouvons les lignes uniques, puis trions à nouveau afin que les lignes les plus fréquentes soient au sommet.
sort file.txt | uniq -c | sort -nr > output.txt
La sortie est redirigée vers le fichier output.txt
. Si vous souhaitez simplement afficher les résultats sur la ligne de commande, supprimez la redirection et changez la dernière commande en sort -n
afin que la ligne la plus courante soit en bas, c'est-à-dire définitivement toujours à l'écran.
cat file.txt | sort
par juste sort file.txt
. :)
cat
par quelque chose de plus intéressant. Depuis, vous savez, il n'y en a pas cat
.
< file.txt sort | uniq -c
. Ceci est facile à modifier et évite tout de même l'inutile cat
.
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'