Bonsoir,
Je cherche (en vain) à récupérer une partie de texte dans un fichier mais je sèche pas mal.
J’ai regardé du côté de grep, de sed, mais sans vraiment trop comprendre comment ça marche.
J’ai cette expression régulière:
.*"IPAddress":"\(.*\)","Remo.*
à chercher et extraire dans une ligne dans un fichier.
J’avais pensé à sed, mais je n’ai pas trouvé comment récupérer juste cette chaine, à chaque fois j’ai la ligne entière qui m’est renvoyée. Idem avec grep.
Mieux, je cherche ce “masque” mais comme vous l’aurez compris cela correspond à une adresse ip qui peut être variable, et ce qui m’intéresse c’est l’IP elle même. Mais si je sais extraire IPAddress":"111.222.333.444","Remo
je pense pouvoir ensuite extraire l’ip.
Cela dit, si on peut me mettre directement sur la piste pour extraire l’ip ça m’intéresse aussi
Mais surtout j’aimerais bien comprendre comment on fait pour pouvoir le réutiliser ailleurs et parfaire mes connaissances.
Merci à vous !
à moins que je ne me trompe :
egrep "IPAddress\(.*\)Remo" | awk -F'"' '{ print $3}'
pas sûr à 100%, mais l’idée y est !
l’idée y est, mais grep | awk
, c’est redondant : awk
sait traiter les regex !
salut
pas compris
quand tu dis : [quote=“arthanyx, post:1, topic:74235”]
J’ai cette expression régulière:
.“IPAddress”:"(.)","Remo.*
à chercher et extraire dans une ligne dans un fichier.
[/quote]
tu veux dire que ta chaine contient les caractères \ puis ( ou que tu veux utiliser cette expression ?
imaginons que tu as machintrucIPAddress:111.222.333.444,Remotrucmuch
blahblahIPAddress:110.222.333.444,Remogabeuzomu
un cat fichier |sed 's/.*IPAddress\:\(.*\),Remo.*/\1/'
Bonjour,
merci à vous pour vos réponse.
Oui c’est exactement ça dindoun.
La nuit portant conseil, j’ai fini par trouver la réponse à ma question après une étude un peu plus approfondie de sed.
Donc je vous en fait part:
sed -e 's/.*IPAddress":"\(.*\)","Remo.*/\1/'
En fait c’était tout con, lors de mes premiers essais, l’heure tardive m’avait fait passer à côté à cause d’une coquille dans l’utilisation de sed que je ne maitrisais pas (ce qui est toujours le cas ^^)
donc pour explication si ça intéresse quelqu’un (on sait jamais) qui n’est pas aguerri à l’utilisation de sed:
-e = on va traiter une regex
s/ABC\(DEF\)G/WXYZ/\1/
= option de remplacement dans la ligne décomposé comme suit:
ABCDEF= motif à rechercher
WXYZ= motif de remplacement
\1= sélection de la première occurrence entre parenthèses