Compter parmis liste d'IP [Résolu/Fermé]

Signaler
-
Messages postés
29505
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 janvier 2021
-
Bonjour,

voilà j'ai un fichier texte qui comporte une liste d'adresses IP,
ce sont les connexions enregistrées, cependant, la même IP peut se répéter (si elle s'est connecté plusieurs fois).
Je voudrais connaître le nombre total d'IP qui s'est connecté (donc qui se trouve dans mon fichier) sans compter les doubles.
Comment puis-je réaliser un script qui exécute ce compte ?
Je sais qu'il faut utiliser grep, mais comment faire pour ne compter qu'une seule fois les IP qui s'y trouvent plusieurs fois ?

Merci de vos réponses, bonne journée.

1 réponse

Messages postés
29505
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 janvier 2021
7 015
Un truc dans ce genre devrait faire l'affaire :

egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt  | sort | uniq | wc -l


Exemple : (qui permettra d'expliquer la commande)

(mando@aldur) (~) $ cat toto.txt  
192.168.1.1 coucou1 
coucou2 192.168.1.2 
coucou3 192.168.1.1 coucou3 

(mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt  
192.168.1.1 
192.168.1.2 
192.168.1.1 

(mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt  | uniq 
192.168.1.1 
192.168.1.2 
192.168.1.1 

(mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt  | sort | uniq 
192.168.1.1 
192.168.1.2 

(mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt  | sort | uniq | wc -l 
2


Le "sort" est nécessaire car "uniq" ne supprime que les répétitions consécutives. Note que si plusieurs IP sont sur la même ligne, ça continue à marcher car "egrep -o" écrira une IP par ligne.

Bonne chance
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci