grep dans une instruction IF
Le script suivant portion de lire chaque ligne dans $next
. Mais quand j'essaie de grep motif particulier c'est à dire "MO"
dans $next
le message d'erreur est affiché sur la sortie standard:
grep: 40922|OPR: No such file or directory
grep: MO: No such file or directory
grep: 12345|OPR: No such file or directory
grep: MO: No such file or directory
grep: 12345|12345|202|local|LMNO: No such file or directory
cat /home/scripts/$E1.out | while read next
do
i=`echo $next | awk -F"|" '{print($1)}'`
j=`echo $next | awk -F"|" '{print($2)}'`
k=`echo $next | awk -F"|" '{print($3)}'`
l=`echo $next | awk -F"|" '{print($4)}'`
m=`echo $next | awk -F"|" '{print($5)}'`
n=`echo $next | awk -F"|" '{print($6)}'`
o=`echo $next | awk -F"|" '{print($6)}'`
if grep -q "MO" $next
then echo "FOUND;" >> /home/scripts/sql.$E1.out
else echo "NOT FOUND;" >> /home/scripts/sql.$E1.out
fi
done
$E1.out
fichiers ressemble :
40922|OPR MO 12345|OPR MO 12345|12345|202|local|LMNO
source d'informationauteur ErAB | 2010-10-15
Vous devez vous connecter pour publier un commentaire.
L'argument que vous transmettez à
grep
$next
est traité comme une liste de noms de fichiers à rechercher. Si vous souhaitez effectuer une recherche à l'intérieur de cette ligne pour une chaîne de caractères, disons,MO
alors vous devez soit mettre dans un fichier et passer ce fichier comme un argument, ou de conduites via l'entrée standard.Voici un exemple que vous pouvez essayer sur la ligne de commande; bien sûr, la substitution de la variable que vous êtes en utilisant pour la valeur littérale que j'ai inclus pour illustrer: