Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/06/2020, à 19:53

Lsy

[Résolu] Les REGEX

Bonjour,
J'ai fais egrep sur la sortie standard de ifconfig pour juste afficher que les adresses Ip de type w.x.y.z ( dont w et x représentent 3 chiffres et y et z peuvent représenter 1 ou 2 ou 3 chiffres). exemple: 192.168.1.55 ou 192.168.22.55

zan@hp:~$ ifconfig | egrep '[0-9]{3}\.[0-9]{3}\.[0-9]{,3}\.[0-9]{,3}'
        inet 192.168.43.253  netmask 255.255.255.0  broadcast 192.168.43.255
zan@hp:~$ 

Mon problème ici, c'est la longueur du motif.
Je voudrais si possible, le reécrire plus court
J'ai tenté en le reécrivant avec les parenthèses comme ceci:

zan@hp:~$ ifconfig | egrep '([0-9]\.){3}\.([0-9]\.){,3}'
zan@hp:~$ 

Aucune sortie, même pas de sortie d'erreur

Je vous prie de m'aider

Dernière modification par Lsy (Le 14/06/2020, à 13:38)


« La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. »  (Albert Einstein).

Hors ligne

#2 Le 07/06/2020, à 20:02

pingouinux

Re : [Résolu] Les REGEX

Bonjour,
Ceci ?

ifconfig | egrep '([0-9]{3}\.){2}([0-9]{,3}\.?){2}'

Hors ligne

#3 Le 07/06/2020, à 20:12

nany

Re : [Résolu] Les REGEX

Bonjour,


La commande « ifconfig » n'a pas été trouvée

Eh oui, la commande ifconfig est obsolète. De même que la commande egrep est dépréciée.
Donc :

ip address | grep -E '([0-9]{3}\.){2}([0-9]{,3}\.?){2}'

Hors ligne

#4 Le 07/06/2020, à 20:27

MicP

Re : [Résolu] Les REGEX

Bonjour

ou alors :

hostname -I | awk '{print $1}'

Dernière modification par MicP (Le 07/06/2020, à 20:29)

Hors ligne

#5 Le 07/06/2020, à 21:39

diesel

Re : [Résolu] Les REGEX

Ou même

hostname -I

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#6 Le 07/06/2020, à 21:51

nany

Re : [Résolu] Les REGEX

~$ hostname -I
192.168.x.xx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxx:xxxx

neutral

Hors ligne

#7 Le 07/06/2020, à 22:27

MicP

Re : [Résolu] Les REGEX

On a aussi, avec bash
sans utiliser ni grep ni awk :

michel@debT450:~$ [[ $(ip a) =~ inet\ ([^/]*)/[0-9]{2}\ brd  ]] && printf '%s\n' ${BASH_REMATCH[1]}
192.168.0.18
michel@debT450:~$ 

ou bien :

michel@debT450:~$ [[ $(hostname -I) =~ ([^ ]*) ]] && printf '%s\n' ${BASH_REMATCH[1]}
192.168.0.18
michel@debT450:~$ 

Dernière modification par MicP (Le 07/06/2020, à 22:34)

Hors ligne

#8 Le 07/06/2020, à 23:05

Watael

Re : [Résolu] Les REGEX

je n'ai pas dit que hostname -I est une liste ?


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#9 Le 07/06/2020, à 23:39

MicP

Re : [Résolu] Les REGEX

Désolé, c'est vrai que tu me l'avais déjà dit => "I must punish myself" (How to irritate people - indian restaurant)

Il me faudrait pratiquer plus souvent pour pouvoir assimiler.

listIPs=( $(hostname -I) )
echo ${listIPs[0]}

Dernière modification par MicP (Le 08/06/2020, à 00:17)

Hors ligne

#10 Le 08/06/2020, à 08:58

diesel

Re : [Résolu] Les REGEX

nany a écrit :
~$ hostname -I
192.168.x.xx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxx:xxxx

neutral

jean-marie@jean-marie:~$ hostname -I
192.168.10.2 
jean-marie@jean-marie:~$

??????????????????

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#11 Le 08/06/2020, à 10:48

bruno

Re : [Résolu] Les REGEX

@diesel : normal si ta machine n'a qu'une seule interface réseau avec une seule adresse IPv4. Une interface réseau peut avoir plusieurs adresses IPv4 et plusieurs IPv6 et une machine peut avoir plusieurs interfaces réseau.
La page de man de hostname dit que l'option -I affiche toutes les adresses IP de l'hôte à l'exclusion de l'interface de bouclage et du lien local IPv6.

Hors ligne

#12 Le 14/06/2020, à 13:16

Lsy

Re : [Résolu] Les REGEX

Bonjour,
Merci à tous pour vos réponses aussi pertinentes les unes que les autres.

Cependant je rappelle que mon objectif était de trouver, si possible, une expression plus court que celle que j'avais écrite dans mon premier message dans l'utilisation des REGEX avec la commande egrep sur la stdout de ifconfig pour trouver les adresses telles que j'avais définies.

pingouinux a écrit :

Bonjour,
Ceci ?

ifconfig | egrep '([0-9]{3}\.){2}([0-9]{,3}\.?){2}'

Cette réponse, même si elle n'est pas aussi courte, satisfait ma préoccupation dans l'utilisation des REGEX
Merci à pingouinux pour cette réponse.


« La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. »  (Albert Einstein).

Hors ligne

#13 Le 14/06/2020, à 14:50

Watael

Re : [Résolu] Les REGEX

ifconfig est en désuétude, comme l'a déjà suggéré nany.
cette courte regex ne fonctionnera sans doute plus quand ifconfig sera définitivement abandonné.

de plus, la regex ne couvre pas toutes les possibilités d'adresses IP.
par exemple, elle n'indiquera pas de correspondance avec 10.0.0.1


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#14 Le 17/06/2020, à 02:59

sputnick

Re : [Résolu] Les REGEX

Plutot que 'ifconfig'; préférer 'ip'. (Comme vu plutôt, 'ifconfig' est déprécié).

Et pour utiliser des regex vraiment éprouvées, utiliser perl et le module Net::IPv4 (paquet 'libregexp-common-perl', sûrement déjà installé) :

ip -br a | perl -MRegexp::Common -lne 'print $& if /($RE{net}{IPv4})/'

Ou bien:

hostname -I | perl -MRegexp::Common -lne 'print $& if /($RE{net}{IPv4})/'

Bien sur, on peut 'matcher' des IPv6 à la place si on veut

Dernière modification par sputnick (Le 17/06/2020, à 03:04)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne