Problème avec egrep

Résolu/Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 3 sept. 2008 à 12:29
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 3 sept. 2008 à 14:42
Bonjour,

J'ai un fichier type :

require_once '/home/lib/common/Mysql.class.php';
require_once ("/home/lib/machin.php"); //c'est bien
require_once '/home/lib/histoclient/Historisation.class.php';
require_once '/home/ws/site/WS_FORFAIT/FORFAIT_CLASS/conf_forfait.php';
include_once ("/home/lib/machintruc.php"); //c'est pas bien
echo "bonjour";

Je veux faire un egrep dessus afin de récupérer les valeurs concernées par le contenu des includes ou require.
J'ai essayé :

Pour commencer :

egrep -o "require|include:space:*.*.php" mon.fichier.txt

Mais egrep ne me renvoie que les includes :

include_once ("/home/lib/machintruc.php

Inversement, si j'essaie :

egrep -o "include|require:space:*.*.php" mon.fichier.txt

Il ne me renvoie que les require.

Pourtant, le pipe correspond bien au motif "OU" ?

Merci :-)

6 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 sept. 2008 à 12:33
Salut,
egrep -o "(require|include)[ [:space:]]*.*.php"
Sans l'espace entre les 2 crochets ouvrants ;-))
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
3 sept. 2008 à 13:57
Merci :-))

Et pour le sed, les parenthèses ne marchent pas ?

J'ai testé :

egrep -o "(require|include):space:*.*.php" /tmp/checkIncludes.sh.tmp|sed "s#['(\"]*##g"|sed "s#(require|include|require_once|include_once)##g"

Mais ca ne marche po :-|
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 sept. 2008 à 14:00
Tu veux faire quoi exactement ?
Virer les require, include, _once, ainsi que les parenthèses, quotes simples et doubles ?
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
3 sept. 2008 à 14:03
oui, juste récupérer les chemins et noms des fichiers concernés par les includes.

Ca donnerait un truc comme :

/home/lib/common/Mysql.class.php
/home/lib/machin.php
/home/lib/histoclient/Historisation.class.php
/home/ws/site/WS_FORFAIT/FORFAIT_CLASS/conf_forfait.php
/home/lib/machintruc.php
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 sept. 2008 à 14:06
egrep -o "(require|include)[ [:space:]]*.*.php" tlep | sed "s/.*['\(\"]//"
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
3 sept. 2008 à 14:13
Ah j'ai compris:

sed remplace par rien tout ce qui va jusqu'à soit quote, soit double quote, soit parenthèse.

Il existe à tout hasard la possibilité (dans sed) d'utiliser le "OU" avec les parenthèses comme ci-dessus avec egrep ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 sept. 2008 à 14:20
Oui, c'est pareil en fait, mais faut échapper le pipe :
egrep -o "(require|include)[ [:space:]]*.*.php" tlep | sed "s/.*'\|(\|\"//"
mais dans le cas où il faut prendre en compte 2 alternatives, une parenthèse ET un guillemet double, ça marche pas ;-((
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
3 sept. 2008 à 14:29
Salut vous deux:

Est-ca, sans le egrep ça suffit pas ?
sed -r -n "s/^(require|include)(_once)?[ [:space:]]*\(?[\"']([^\"']*)[\"']\)?.*/\3/p" tlep
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 sept. 2008 à 14:34
Aussi, mais j'ai pris les questions et les demandes dans l'ordre môa ;-))

T'as un blème dans ton space ;-))

Puisque t'es là et que tu l'as vu, tu peux faire en sorte qu'on ne soit pas obligé de rajouter des espaces à tout va avec le shell, s'il te plaît Môssieur Sévère A. Merchi beaucoup ;-))
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
3 sept. 2008 à 14:36
Ben là tout de suite, non, mais j'y penserais... y'a a mon avis pas de raison d'interpreter quoi que ce soit entre < code> et < /code> sauf éventuellement <gras><souligne><ital>....
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022
3 sept. 2008 à 14:37
Si les liens ;-(( Et c'est ça qui fiche la pagaille...
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
3 sept. 2008 à 14:39
Si les liens ;-(( Et c'est ça qui fiche la pagaille...

Là oui, mais y'a une raison pour que ça reste comme ça ? (même le gras/ital/souligne en fait, ça devrait pas être pris en compte)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022
3 sept. 2008 à 14:42
On en avait déjà causé je sais plus où, mais faudrait implémenter une reconnaissance syntaxique comme sur les paste.bin... faudrait ;-))
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
3 sept. 2008 à 14:40
merci les gars :-)
0