Bonjour à toutes et à tous

Je rencontre un petit problème grep. J'ai deux listes de références contenues chacune dans une variable : MNList et ToKeep.

Voici une partie de MNList
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#80
#81
#8
#82
#83
#84
#85
#86
#87
#88
#89
#90
#91
#9
#92
Et voici une partie de ToKeep :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#5
#58
#61
#64
#65
#71
#83
#85
#86
#88
#91
En gros, je veux comparer MNList à ToKeep et générer un fichier qui contient l'information "DEL" pour chaque référence #x de MNList qui ne sera pas retrouvée dans ToKeep.

Lorsque je boucle sur MNList :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
imax=`echo $MNList | awk '{print NF;}'`
 
for i in `seq 1 $imax`;
do
  MN=`echo $MNList | cut -d " " -f $i`
echo "MN = '$MN'"
echo "grep : "
echo $ToKeep | grep -o "$MN"
  if [ -z "`echo $ToKeep | grep -o "$MN"`" ] ; then
	del="DEL"
echo "FLAG DEL"
  else
	del=""
echo "FLAG ELSE"
  fi
 
  LH=`echo $list | grep -o "@$MN@" | wc -l`
  echo "$MN $LH $del" >> $txtFile
done
j'obtiens le problème suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
MN = '#8'
grep :
#8
#8
#8
#8
FLAG ELSE
MN = '#82'
grep :
FLAG DEL
MN = '#83'
grep :
#83
FLAG ELSE
MN = '#84'
grep :
FLAG DEL
MN = '#85'
grep :
#85
FLAG ELSE
MN = '#86'
grep :
#86
FLAG ELSE
MN = '#87'
grep :
FLAG DEL
MN = '#88'
grep :
#88
FLAG ELSE
MN = '#89'
grep :
FLAG DEL
MN = '#90'
grep :
FLAG DEL
MN = '#91'
grep :
#91
FLAG ELSE
MN = '#9'
grep :
#9
FLAG ELSE
Pourquoi grep renvoi plusieurs fois #8 ? #8 est absent de ToKeep il ne devrait rien renvoyer, de même #9 est renvoyé alors qu'il n'est pas présent dans ToKeep (et cette fois-ci grep ne renvoi qu'une seule occurrence du motif recherché). #83 par exemple est bien reconnu et le bon flag lui est attribué... C'est à n'y rien comprendre ^^"