2012-04-24 14 views
15

Diciamo che ho milioni di pacchetti da esaminare e voglio vedere quante volte un pacchetto è stato inviato a un certo numero di porta.Come si stampa il conteggio delle corrispondenze univoche con grep?

Ecco alcuni dei pacchetti:

10:27:46.227407 IP 85.130.236.26.54156 > 139.91.133.120.60679: tcp 0 
10:27:46.337038 IP 211.142.173.14.80 > 139.91.138.125.56163: tcp 0 
10:27:46.511241 IP 211.49.224.217.3389 > 139.91.131.47.6973: tcp 0 

voglio guardare attraverso il numero 2a porta qui così:

60679, 53163, 6973, ecc

modo da poter utilizzare:

grep -c '\.80:' output.txt 

Per contare tutte le volte che è stata utilizzata la porta 80. Ma c'è un modo per visualizzare tutte le porte che sono state utilizzate e quante volte è stato trovato in questo file. Qualcosa di simile a questo e preferibile allineati anche così posso vedere quali porte sono stati utilizzati più di frequente:

.80: - 54513 
.110: - 12334 
.445: - 412 

risposta

33

Vedi uniq -c. Dovrai estrarre il bit desiderato, ordinare il risultato, pipe attraverso uniq, ordinare l'output. Qualcosa di simile a questo forse:

egrep '\.[0-9]+:' output.txt | sort | uniq -c | sort -nr 

Precisazione: ho usato grep qui perché non è chiaro che cosa il vostro formato output.txt assomiglia, ma ti consigliamo di realtà tagliare fuori il bit numero di porta, forse via cut oppure awk.

Modifica: Per ottenere il porto, è possibile tagliare una volta su un periodo e poi di nuovo su due punti: (. O uno qualsiasi di una dozzina di altri modi per ottenere la stessa cosa)

cut -d. -f10 < output.txt | cut -d: -f1 

Quella volontà darti una lista di porte non ordinate. Poi:

cut -d. -f10 < output.txt | cut -d: -f1 | sort | uniq -c | sort -nr 
+0

Grazie per l'aiuto. Ma sto avendo problemi con il taglio. C'è un modo per tagliare solo usando l'espressione regolare? Perché il numero di porta non è nella stessa colonna e la spaziatura ogni volta. – Dragonfly

+0

Taglia non usa espressioni regolari. Modifica la tua domanda e aggiungi alcune righe di esempio in modo che possiamo vedere il formato. –

+0

Ok ho modificato alcuni esempi. Cosa consiglieresti io che uso allora? – Dragonfly

Problemi correlati