grep avec un espace dans un script

grep avec un espace dans un script - Shell/Batch - Programmation

Marsh Posté le 17-12-2009 à 18:40:38    

Bonjour

 

Question syntaxe, probablement

 

grep Dec\ 15 ./monfichier


me filtre sur la chaine de caractère "Dec 15" le contenu de monfichier, ca c'est bon, j'ai trouvé  [:volta]
Je souhaite mettre un paramètre variable dans un script, ce paramètre variable étant je paramètre à passer à grep, donc ici "Dec 15"

 

Le man de getops m'indique que ca gère pas les chaine avec espace, bon j'ai quand meme tenté de grugé à base de monprog -d "Dec 15" ou monprog -d "Dec \ 15" ou... Sans résultat.
Je voulais contourner le problème avec 2 paramètre

monprog -m Dec -j 15


J'arrive bien à récupéré les 2 variables;
mais quand j'essai dans mon script :

ladate=${mois}" "${jour}
export ladate
echo ${ladate} #ca c'est bon ca affiche ce qu'il faut, pas de "bug"
#mais alors
grep ${ladate} ./monfichier


Alors ca, ca passe pas du tout
J'ai essayé pleins de syntaxes différentes, je me fais renvoyer bouler. Une idée de la bonne syntaxe ?


Message édité par tuxbleu le 18-12-2009 à 09:50:05

---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 17-12-2009 à 18:40:38   

Reply

Marsh Posté le 18-12-2009 à 09:35:48    

Voici la solution (que j'ai testée sous unix Solaris)

mois="Dec"
jour="15"
ladate=${mois}" "${jour}
export ladate
echo ${ladate} #ca c'est bon ca affiche ce qu'il faut, pas de "bug"
#mais alors
# grep ${ladate} ./monfichier   # Ne marche pas
grep "${ladate}" ./monfichier

Il suffit de mettre des guillemets car grep veux deux arguments, et l'espace est un séparateur d'arguments, sauf si l'espace fait partie d'une chaine entre guillemets.

Reply

Marsh Posté le 18-12-2009 à 09:49:23    

olivthill a écrit :

Voici la solution (que j'ai testée sous unix Solaris)

mois="Dec"
jour="15"
ladate=${mois}" "${jour}
export ladate
echo ${ladate} #ca c'est bon ca affiche ce qu'il faut, pas de "bug"
#mais alors
# grep ${ladate} ./monfichier   # Ne marche pas
grep "${ladate}" ./monfichier

Il suffit de mettre des guillemets car grep veux deux arguments, et l'espace est un séparateur d'arguments, sauf si l'espace fait partie d'une chaine entre guillemets.

 

C'est toi le meilleur  :love:
testé et approuvé sur ma debian  :jap:

Edit : ah ben non en fait, il me filtre plus rien, comme si je faisais pas de grep.
[:klemton]

 

re-edit :
C'est toi le meilleur  :love:
testé et approuvé sur ma debian  :jap:
Le soucis venais de l'ordre d'appel des arguments, en gros je faisais  
-dm Dec -j 15 , et dans l'option -d je récupérais les variables m et j.
Donc ca marche bien mieux avec
-m Dec -j 15 -d

 

Bon, faut que j'arrange ca mieux pour pas avoir la contrainte :jap:


Message édité par tuxbleu le 18-12-2009 à 09:57:45

---------------
Mon topic de vente - Mon feed-back
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed