Bonjour,

Cela fait un petit moment que je suis venu mais...retour au shell après un moment de python, et je dois gérer un import d'user dans un addressbook, parcontre je suis en pure galère pour gerer mes 2 fichiers en mode ligne par ligne en même temps (le retour au shell fait mal)

C'est loin d'être très propre pour le moment, et l'adressbook où je suis est...un foutoir avec au moins 12 formats différents et interdit d'y touché, on instaure le format prévu actuellement NOM Prénom:mail
Il faut parcontre tenir compte des 5000 autres contactes pouvant être dispatché de type NOM:mail ou Prenom NOM:mail pour gerer les doublons, voir les changements de mail.

Pour le moment...J'en suis là et ca ne donne pas grand chose de fonctionnel, les 2 fichiers ne se lisent pas ligne par ligne comme il faut et j'ai un gros trou sur le comment faire pour avoir un retour ligne par ligne mit en variable...ou voir a améliorer ma base

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/bin/bash -x
 
 
#### Variables ####
ADDRESSBOOK=" /addressbook/addressbook"
LOG=" /addressbook/log/ajout_mail_addressbook.log"
DATE=`date +"%Y-%m-%d"`
LISTE_MAIL=" /addressbook/a_verifier.txt"
 
#### Verification du fichier mailuser.txt #####
cat /addressbook/a_verifier.txt | while read "LISTE_NEW"
do
if [ ! -s $LISTE_MAIL ]
then
    echo "Merci de renseigner le fichier $LISTE_MAIL"
    echo "ainsi : Nom Prenom:email@provider.com"
    exit 0
fi
### Verification du fichier Générer ###
> /addressbook/listeusermail
awk 'NF != 2 { print }' $A_VERIFIER >  /addressbook/listeusermail
 
if [ -s  /addressbook/listeusermail ]
then
    echo "le fichier mailuser.txt doit contenir 3 champs : Nom Prenom:email@provider.com"
    echo "Veuillez verifier le contenu du fichier : $LISTE_MAIL"
    exit 0
fi
 
cat   /addressbook/addressbook | while read ADDRESSBOOK_READ
do
echo-e $ADDRESSBOOK_READ
##### Vérification si l utilisateur existe deja ####
> /addressbook/listeusermail
#Detail des possibilité de recherche
NOM=$( echo $LISTE_NEW | sed "s/:/\\ /g" |awk '{print $1}')
NOM_PRENOM=$( echo $LISTE_NEW | sed "s/:/\\ /g" |awk '{print $1,$2}')
PRENOM_NOM=$( echo $LISTE_NEW | sed "s/:/\\ /g" |awk '{print $2,$1}')
#EMAIL=$( echo $LISTE_NEW | sed "s/:/\\ /g" |awk '{print $3}')
EMAIL=$( echo $LISTE_NEW | sed "s/:/\\ /g" | awk '{print $(NF-0)}')
#récupération du mail pour replace ancien > nouveau si changement
ADDRESSBOOK_MAIL=$(echo $ADDRESSBOOK_READ | sed "s/:/\\ /g" | awk '{print $(NF-0)}')
 
	#si $NOM est trouvé, vérification si prenom_nom puis mail ou vérification nom_prenom puis mail
 
echo $ADDRESSBOOK_READ | grep -s $NOM
  if [ $? -eq 0 ]
  then # grep de la présence nom + prenom
    echo $ADDRESSBOOK_READ | grep -s $NOM_PRENOM 
      if [ $? -eq 0 ] 
      then  #grep la présence du mailuser
	echo $ADDRESSBOOK_READ | grep -s $EMAIL
	if [ $? -ne 0 ]
	then
	  echo "L'utilisateur  $NOM_PRENOM à changer d'email"
	  # modification du mailuser dans l'addressbook
	    sed "s/$ADDRESSBOOK_READ_MAIL/$EMAIL/g" >> $ADDRESSBOOK
	fi
      fi
    echo $ADDRESSBOOK_READ | grep -s $PRENOM_NOM
      if [ $? -eq 0 ] 
      then  #grep la présence du mailuser
	echo $ADDRESSBOOK_READ | grep -s $EMAIL
	if [ $? -ne 0 ]
	then
	  echo "L'utilisateur $PRENOM_NOM à changer d'email"
	  # modification du mailuser dans l'addressbook
	    sed "s/$ADDRESSBOOK_READ_MAIL/$EMAIL/g" >> $ADDRESSBOOK
	fi
      fi
  else	#si l'utilisateur n'a pas que le nom, grep du nom et du mail, si non présent: ajout dans l'addressbook
    	echo grep -s $NOM $ADDRESSBOOK_READ |grep -s $EMAIL
	if [ $? -eq 0 ]
	then echo
	  echo "L'utilisateur  $NOM à changer d'email"
	  # modification du mailuser dans l'addressbook
	    sed "s/$ADDRESSBOOK_READ_MAIL/$EMAIL/g" >> $ADDRESSBOOK
	fi
  fi
 
echo $ADDRESSBOOK_READ | grep -s $NOM
  if [ $? -ne 0 ]
  then # grep de la présence nom + prenom	
  echo $ADDRESSBOOK_READ | grep -s $PRENOM_NOM
    if [ $? -ne 0 ]; #si n'est pas grep prenom_nom + mail
    then
    echo $ADDRESSBOOK_READ | grep -s $NOM_PRENOM
      if [ $? -ne 0 ]  #si n'est pas grep nom + mail
      then echo "ajout dans l'addressbook de $NOM_PRENOM:$EMAIL "
      cat  /addressbook/listeusermail | while read i
	do # ajout dans l'addressbook
	  MAIL=`echo $i | awk '{ print $3 }'`
	  #var=`echo $i | awk '{ print $1, $2":"$3 }'`
	  echo $var
	  #echo $MAIL
	  echo $var >> $ADDRESSBOOK
	  echo "L adresse mail de $i a ete ajoutee à l addressbook"
	  echo -e "$DATE \t\t Ajout de l email $MAIL a l addressbook " >> $LOG
	done
      fi
    fi
  fi
 
#fi
done
done