Tableau shell avec resultat de grep | awk

Résolu/Fermé
yoopi - 21 janv. 2009 à 11:19
 Youssef - 9 avril 2021 à 13:10
Bonjour,

après avoir executé un grep 'qqch' nomdefichier | awk -F" : " '{ print $2 }'

j'obtiens une liste telle que

23654
12345
98765
25634
48569
75235
55992
21456
12458
...

il y a une vingtaine de ligne

je voudrais mettre ces données dans un tableau afin de pouvoir les comparer par la suite avec les résultats de la meme commande mais dans un autre fichier afin de savoir si ils y a des numeros qui manquent ou pas

la première ligne est créée automatiquement (ce sont des numeros d identidiant de personnes qui se connectent) et la 2e liste est la liste complète des identifiants existant dans un fichier

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 894
21 janv. 2009 à 11:50
Salut,

Une façon de faire en bash :
[tmpfs]$ cat toto
23654
12345
98765
25634
48569
75235
55992
21456
12458

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

#set -xv

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

i=0
while [ "$i" -lt "${#tab[*]}" ]
do
echo "Element $((i+1)) du tableau : ${tab[$i]}"
((i++))
done

[tmpfs]$ ./bar.sh
Element 1 du tableau : 23654
Element 2 du tableau : 12345
Element 3 du tableau : 98765
Element 4 du tableau : 25634
Element 5 du tableau : 48569
Element 6 du tableau : 75235
Element 7 du tableau : 55992
Element 8 du tableau : 21456
Element 9 du tableau : 12458

[tmpfs]$ 
;-))
4
décidément t'es toujours là où il faut et quand il faut :-)

merci pour le programme ca à l'air efficace

pourrais-tu éclairer ma lanterne sur un partie du programme svp ?

que fait : #set -xv ?

peux tu commenter : while [ "$i" -lt "${#tab[*]}" ] ?

d'avance merci
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 894 > yoopi
21 janv. 2009 à 12:33
que fait : #set -xv ?
En décommentant cette ligne ça permet de déboguer le script et de voir l'interprétation des variables (man bash)

peux tu commenter : while [ "$i" -lt "${#tab[*]}" ] ?
tant que la valeur de "$i" est inférieure (-lt = less than ou plus petit que) au nombre d'éléments du tableau (peut s'écrire aussi "${#tab[@]}". Tout en gardant à l'esprit que la numérotation des tableaux commence à 0 (et non pas à 1).
0
yoopi > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
21 janv. 2009 à 12:35
ok merci

je vais aller manger un morceau

bon app ;-)
0
yoopi > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
21 janv. 2009 à 13:14
re

merci encore pour toutes tes explications

une dernière petite question

avec ce tableau comment pourrais-je faire pour comparer chacun des éléments du tableau avec une liste au format :

23564
23548
65423
96587
54869
52146
14547
85692

si je rencontre l'élément de mon tableau dans la liste préétablie alors c'est OK sinon c'est WARNING ???
0
Merci beaucoup pour ton aide, t'es le meilleur tu ma aider sa fais une semaine que j'étais bloquer hahhaha quel satisfaction
0
j'ai oublié de mentionner que je travaille sous linux en bash et sous solaris 9 en csh

j'espère que qqn pourra m'aider :-)
1