Comparer éléments tableau avec un fichier sh

Résolu/Fermé
yoopi - 21 janv. 2009 à 13:24
 noneight - 21 mars 2011 à 21:04
Bonjour,

j'ai un tableau tab[i], je voudrai comparer chaque élément le composant avec une liste d'un fichier toto

cat toto

23568
23548
23569
65248
75896
65423
96584

si l'élément est présent dans ma liste alors c'est OK sinon c'est WARNING
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 janv. 2009 à 13:37
Re-
[tmpfs]$ cat toto
23654
12345
98765
25634
48569
75235
55992
21456
12458

[tmpfs]$ cat tata
23654
12345
25634
48569
55992
21456

[tmpfs]$ cat bar.sh
#! /bin/sh

#set -xv

IFS=$'\n'
tab=( $( cat toto ) )

for i in ${tab[@]}
do
grep "$i" < tata >/dev/null
if [ "$?" = 1 ]
then
echo "Elément "$i" absent."
fi
done

[tmpfs]$ ./bar.sh
Elément 98765 absent.
Elément 75235 absent.
Elément 12458 absent.

[tmpfs]$
Mais bon ce n'était pas la peine de générer un tableau pour ça, une simple boucle comme ça suffisait :
while read line
do grep "$line" tata >/dev/null
if [ "$?" = 1 ]
then echo "Elément "$line" absent."
fi
done < toto
;-))

4
ok merci

je vais essayer ta boucle magique ;-)

je te tiens au courant
0
je suis partis sur un tas de trucs en mm tps j'ai oublié de te dire q c'était parfait j'en ai fait quelques unes de boucles :-)

merci et bonne fin de soirée
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > yoopi
21 janv. 2009 à 17:16
De rien, bonne soirée à toi aussi ;-)
0
bonsoir

Moi je voudrais faire l'inverse. Je voudrais détecter la redondance entre mon tableau et mon fichier.
Je n'y arrive pas... help please.

Merce d'avance
0
Utilisateur anonyme
22 janv. 2009 à 19:26
Bonsoir,

Jipicy juste une question ou deux:

suite au poste #1,
la boucle fonctionne parfaitement sachant que je suis sous AIX/ksh, mais pas le tableau

avec le tableau, j'obtiens comme message d'erreur:

./bar.sh[6]: 0403-057 Erreur de syntaxe. ligne 6 : `(' imprévu.

j'ai essayé plusieurs solutions mais en vain ... (changement de shell, #! /bin/sh par #! /bin/ksh, remplacement des parenthèses par des crochets etc ...)

les tableaux et AIX/ksh ne semblent pas faire bon ménage,

il doit y avoir un truc ....

si vous pouviez m'éclairer ...

++
Poulpoul

Bonne soirée
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 janv. 2009 à 20:02
Avec ksh :
$ set -A tableau un deux trois

$ echo ${tableau[*]}
un deux trois

$ echo ${tableau[1]}
deux

$ echo ${tableau[0]}
un

$ echo ${#tableau[*]}
3

$
;-))
0