GNU/Linux >> Tutoriels Linux >  >> Linux

Trier et compter le nombre d'occurrences de lignes ?

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)

Linux
  1. Nombre de lignes produites par Ls ?

  2. Comment compter le nombre de lignes dans un fichier après une correspondance Grep ?

  3. Comment compter le nombre de lignes dans un fichier sous Linux (exemples de commandes wc et nl)

  4. Comment compter les lignes dans un document ?

  5. Comment compter le nombre total de lignes de fichiers trouvés ?

Commande WC sous Linux (compter le nombre de lignes, de mots et de caractères)

Commande WC Linux pour compter le nombre de lignes, de mots et de caractères

5 façons de compter le nombre de lignes dans un fichier

Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire

Exemples de commandes WC :compter le nombre de lignes, de mots et de caractères sous Linux

Linux :rechercher le nombre de fichiers dans un répertoire et des sous-répertoires