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 numéro de ligne - Forum Programmation
- Double grep ✓ - Forum Linux / Unix
- You have an error in your sql syntax; check the manual that corresponds to your mysql server version for the right syntax to use near '' ✓ - Forum MySQL
- Cat grep ✓ - Forum Shell
4 réponses
zipe31
Messages postés
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 557
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
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 557
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
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 557
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
2101
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
7 novembre 2022
258
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.