7
votes

Trouver la ligne la plus fréquente dans le fichier à bash

Supposons que j'ai un fichier similaire à celui suivant: xxx

Je voudrais trouver la ligne la plus répétée, la sortie doit être juste la ligne.

i 'VE essayé xxx

mais j'ai besoin de la propre sortie, juste la ligne la plus répétée (dans cet exemple kaylee 25 ).


4 Réponses :


6
votes

kaizen ~ xxx

Est-ce que cela aide?


5 commentaires

Je ne pense pas que l'appel à xargs est nécessaire ici.


Xargs ... c'est de supprimer les espaces, sa simple et simple. Vous pouvez également utiliser Traduire si vous avez aimé !!


xargs supprimera également des espaces consécutifs valides. Vous aurez probablement besoin de supprimer xargs et d'utiliser une autre méthode comme sed s / ^ \ s \ + [0-9] \ + \ s // ' pour supprimer la colonne de comptage au lieu de couper


Utilisez la trieuse trier-tri au lieu de trier -r . Par exemple, - Version-trier Sortiez correctement "351, 51, 5", tandis que -r va sortir "5, 351, 51".


Notez que cette solution est erronée car le second n'a pas -n (indiqué par le Réponse ci-dessous )



0
votes
$ uniq -c list | sort -r | head -1 | awk '{$1=""}1'

Kaylee 25
Is this what you're looking for?

0 commentaires

2
votes

awk - xxx


1 commentaires

Solution intéressante et différente.



4
votes

IMHO, aucune de ces réponses ne triera correctement les résultats. La raison est que ce type, sans le -n code>, option triera comme suit ce " 1 10 11 2 3 4 code>", etc., au lieu de " 1 2 3 4 10 11 12 CODE> ". Donc, ajoutez -n code> comme:

sort zlist | uniq -c | sort -n -r | head -1


0 commentaires