GNU/Linux >> Znalost Linux >  >> Linux

Třídit a počítat Počet výskytů řádků?

Mám Apache logfile, access.log , jak spočítat počet výskytů řádků v tomto souboru? například výsledek cut -f 7 -d ' ' | cut -d '?' -f 1 | tr '[:upper:]' '[:lower:]' je

a.php
b.php
a.php
c.php
d.php
b.php
a.php

výsledek, který chci, je:

3 a.php
2 b.php
1 d.php # order doesn't matter
1 c.php 

Přijatá odpověď:

| sort | uniq -c

Jak je uvedeno v komentářích.

Výstup výstupu do sort uspořádá výstup do abecedního/numerického pořadí.

Toto je požadavek, protože uniq shoduje se pouze na opakovaných řádcích, tj.

a
b
a

Pokud používáte uniq v tomto textovém souboru vrátí následující:

a
b
a

Je to proto, že dva a s jsou odděleny b – nejsou po sobě jdoucí řádky. Pokud však nejprve seřadíte data v abecedním pořadí, nejprve jako

a
a
b

Poté uniq odstraní opakující se řádky. -c možnost uniq spočítá počet duplikátů a poskytne výstup ve tvaru:

2 a
1 b

Reference:

  • sort(1)
  • uniq(1)

Linux
  1. Jak vytisknout řádky číslo 15 a 25 z každých 50 řádků?

  2. Jak spočítat počet řádků v souboru po zápase Grep?

  3. Jak počítat řádky v dokumentu?

  1. Jak spočítat počet souborů a podadresářů v daném adresáři

  2. Počet řádků vydaných Ls?

  3. Počítat řádky v souboru?

  1. Počítejte řádky, slova a znaky ze souboru v Linuxu

  2. Jak počítat počet řádků v souboru v Linuxu (příklady wc a nl)

  3. Spočítejte řádky všech souborů v adresáři Ubuntu