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
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
12
13
14
15 #80 #81 #8 #82 #83 #84 #85 #86 #87 #88 #89 #90 #91 #9 #92
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.
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
Lorsque je boucle sur MNList :
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 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
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 ^^"
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
Partager