J'ai Apache
fichier journal, access.log
, comment compter le nombre d'occurrences de ligne dans ce fichier ? par exemple le résultat de cut -f 7 -d ' ' | cut -d '?' -f 1 | tr '[:upper:]' '[:lower:]'
est
a.php
b.php
a.php
c.php
d.php
b.php
a.php
le résultat que je veux est :
3 a.php
2 b.php
1 d.php # order doesn't matter
1 c.php
Réponse acceptée :
| sort | uniq -c
Comme indiqué dans les commentaires.
Transférer la sortie dans sort
organise la sortie par ordre alphabétique/numérique.
Ceci est une exigence car uniq
correspond uniquement aux lignes répétées, c'est-à-dire
a
b
a
Si vous utilisez uniq
sur ce fichier texte, il renverra ceci :
a
b
a
C'est parce que les deux a
les s sont séparés par le b
– ce ne sont pas des lignes consécutives. Cependant, si vous triez d'abord les données par ordre alphabétique comme
a
a
b
Puis uniq
supprimera les lignes répétitives. Le -c
option de uniq
compte le nombre de doublons et fournit une sortie sous la forme :
2 a
1 b
Références :
sort(1)
uniq(1)