Tableau shell avec resultat de grep | awk [Résolu/Fermé]

Signaler
-
 Youssef -
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 855
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
Merci

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez Comment Ça Marche

CCM 65492 internautes nous ont dit merci ce mois-ci

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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 855 > yoopi
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).
>
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

ok merci

je vais aller manger un morceau

bon app ;-)
>
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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 ???
Merci beaucoup pour ton aide, t'es le meilleur tu ma aider sa fais une semaine que j'étais bloquer hahhaha quel satisfaction
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 :-)