Probleme de syntax avec grep...
Résolu/Fermé
lsda26
Messages postés
68
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
6 septembre 2013
-
Modifié par lsda26 le 28/03/2013 à 17:19
lsda26 - 2 avril 2013 à 08:43
lsda26 - 2 avril 2013 à 08:43
A voir également:
- Probleme de syntax avec grep...
- Find grep - Forum Linux / Unix
- Grep recursif - Forum Linux / Unix
- You have an error in your sql syntax; check the manual that corresponds to your mariadb server version for the right syntax to use near ✓ - Forum MySQL
- Commandes grep et find? - Forum Shell
- Grep récursif - Forum Programmation
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
28 mars 2013 à 17:35
28 mars 2013 à 17:35
Salut,
On va faire un peu plus générique :
;-))
On va faire un peu plus générique :
$ cat fich subgraph cluster_BatH { bgcolor=aquamarine; label = "Bat_H"; } "node156" --"node128"[taillabel="7", headlabel="24"]; "node156" -- "node155"[taillabel="49", headlabel="50"]; "node155" -- "node144"[taillabel="49", headlabel="50"]; "node155" -- "node156"[taillabel="50", headlabel="49"]; } $ H="156";RH="155";LP="49";RP="50" $ grep '^"[^"]*'${H}'"[^\[]*'${RH}'"\[[^"]*"'${LP}'"[^"]*"'${RP}'".*' fich "node156" -- "node155"[taillabel="49", headlabel="50"]; $ grep '^"[^"]*'${RH}'"[^\[]*'${H}'"\[[^"]*"'${RP}'"[^"]*"'${LP}'".*' fich "node155" -- "node156"[taillabel="50", headlabel="49"]; $
;-))
Ouch, costaud la regex!
Autant le premier ^ je comprend sa présence, autant les autres ^à l'interieur des crochet je ne comprend pas...
De même, je pensais que le ' ne permettait pas d'interpréter les variables car cela signifiait de traiter le contenu en pur texte!
J'avais essayé en vain de tester sous cette forme!
Je testerai cel mardi et vous tiendrai au courant du bon fonctionnement ou pas!
Merci
Autant le premier ^ je comprend sa présence, autant les autres ^à l'interieur des crochet je ne comprend pas...
De même, je pensais que le ' ne permettait pas d'interpréter les variables car cela signifiait de traiter le contenu en pur texte!
J'avais essayé en vain de tester sous cette forme!
Je testerai cel mardi et vous tiendrai au courant du bon fonctionnement ou pas!
Merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
28 mars 2013 à 18:41
28 mars 2013 à 18:41
Autant le premier ^ je comprend sa présence, autant les autres ^à l'interieur des crochet je ne comprend pas...
En fait le "^" à l'intérieur des crochets indique la négation. Donc avec le "*" qui suit, on demande à trouver n'importe quel caractère jusqu'à ce qu'on rencontre celui précisé dans la négation.
De même, je pensais que le ' ne permettait pas d'interpréter les variables car cela signifiait de traiter le contenu en pur texte!
Si tu regardes bien tu remarqueras que le caractère ' est répété tout au long de la regex. C'est une façon de faire qui permet de sortir de la syntaxe de grep (ou autre programme), à partir de là la variable qui suit est donc à nouveau interprétable. Puis on réouvre la syntaxe, et ainsi de suite...
En fait le "^" à l'intérieur des crochets indique la négation. Donc avec le "*" qui suit, on demande à trouver n'importe quel caractère jusqu'à ce qu'on rencontre celui précisé dans la négation.
De même, je pensais que le ' ne permettait pas d'interpréter les variables car cela signifiait de traiter le contenu en pur texte!
Si tu regardes bien tu remarqueras que le caractère ' est répété tout au long de la regex. C'est une façon de faire qui permet de sortir de la syntaxe de grep (ou autre programme), à partir de là la variable qui suit est donc à nouveau interprétable. Puis on réouvre la syntaxe, et ainsi de suite...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
28 mars 2013 à 18:49
28 mars 2013 à 18:49
Pour illustrer la négation... Si on ne veut récupérer que ce qu'il y a entre parenthèse (avec l'option "-o" de grep) :
$ echo 'Il fait "beau" ce matin' Il fait "beau" ce matin $ echo 'Il fait "beau" ce matin' | grep -o '"[^"]*"' "beau" $
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
28 mars 2013 à 19:21
28 mars 2013 à 19:21
Salut lsda26,
il manque un $ dans ton premier message :
echo "lancement recherche des chaines"
grep "$lien2" graph.dot || grep "$lien1" graph.dot
Bonne continuation.
il manque un $ dans ton premier message :
echo "lancement recherche des chaines"
grep "$lien2" graph.dot || grep "$lien1" graph.dot
Bonne continuation.