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: