[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: script shell



On Thu, Jul 12, 2001 at 03:51:15AM -0500, Alain Tésio wrote:
> Peut-?tre pas la meilleure solution mais ca devrait marcher :
> 
> 
> if ( test `grep "TOTO" $FILE | wc -l | sed "s/ //g"` != "0")
> then
>  echo "match TOTO"
> fi

Déjà,
if grep -sq "TOTO" $FILE ; then
  echo "match TOTO"
fi
fait la même chose plus rapidement (moins de process à lancer).
ensuite, on risque de faire le grep dans une mauvaise partie du fichier.
On peut donc faire (si on cherche dans la deuxième ligne) :

if sed -e '2p;d' < "$FILE" | grep -sq "TOTO" ; then
  echo "match TOTO"
elif sed -e '2p;d' < "$FILE" | grep -sq "TATA" ; then
  echo "match TATA"
elif sed -e '2p;d' < "$FILE" | grep -sq "TITI" ; then
  echo "match TITI"
else
  echo "bad match"
fi

Pour améliorer un peu, on peut éviter de lancer sed à chaque fois :
LIGNE=`sed -e '2p;d' < "$FILE"`
if echo "$LIGNE" | grep -sq "TOTO" ; then
...


Remarque, si les recherches à faire sont simple (un mot, pas une
expression régulière), on peut aussi utiliser :

case `sed -e '2p;d' < "$FILE"` in
*TOTO*) echo "match TOTO";;
*TATA*) echo "match TATA";;
*TITI*) echo "match TITI";;
*) echo "bad match"
esac


  Vincent

> > excusez moi si ma quetion (ou mon probleme) releve du niveau debutant:

Mais non, les questions de débutant sont bienvenues. Par contre, je ne
vois pas vraiment le rapport avec debian ici. Ce n'était peut-être donc
pas la bonne ML/le bon NG...

> > j'ai un fichier texte a dirige vers une imprimante distincte en fonction
> > d'une chaine de caractere qui doit se trouver dans ce fichier.
[...]
> > De plus je sais exactement ou se trouve dans mon fichier la chaine que
> > je recherche. Voir ci-dessous ( ma chaine se trouve toujours en premiere
> > ligne apr?s la chaine To: )
> > 
> > To: fcartron
> > Subject: facsimile job 1567 to XXXXXXXXXX completed
> >  
> > Your facsimile job to 0493219890 was completed successfully.
> >          JobID: 1567
[...]



Reply to: