Bonjour,
je doit analyser des fichiers .txt avec un script shell. Si dans le fichier, il y a une variable, ici P330, la suite du script s'exécute, sinon, rien ne se passe.
Donc j'ai fait le script suivant mais je n'arrive pas à faire fonctionner la fonction if qui teste la présence de cette variable.
merci
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 #$ nl adress_coordonnee1.awk { for fich in *.txt; do grep -q "P330" $fich if [ "$?" = "0" ] then sed "s/address /'/g" adress2_${fich%.*}.txt > adress1_${fich%.*}.txt sed "s/rue/'/g" adress1_${fich%.*}1.txt > adress2_${fich%.*}.txt #permet de vider la table avant de la remplir echo 'echo "truncate table "adresse_'${fich%.*}'" ;" | mysql fournisseur ' > ADRESSE_FINAL_${fich%.*}.sql #affiche "insert into ..." dans un fichier nommé adress_text.csv echo 'echo "insert into adresse_'${fich%.*}' (adresse, rue) values '> adress_text.csv #permet d'inserer les données de adress1_coordonnee1.txt dans adress_text.csv tout en gardant en mémoire les valeurs déja inscrites dans ce fichier. cat adress1_${fich%.*}.txt >> adress_text.csv #permet de supprimer les retours chariots du fichier adress_text.txt puis de tout mettre dans un fichier adress1_text.csv tr -d '\r\n' < adress_text.csv > adress1_text.csv sed 's/)(/), (/g' adress1_text.csv > adress2_text.csv sed 's/)*$/);" | mysql founisseur/g' adress2_text.csv > adress3_text.csv echo -e '\n' >> adress3_text.csv cat adress3_text.csv >> ADRESSE_FINAL_${fich%.*}.sql #permet de supprimer définitivement les fichiers intermédiaires générés après l'éxécution du script sans les mettre dans la poubelle. Il ne restera que ADRESSE_FINAL.sql rm adress3_${fich%.*}.txt rm adress2_${fich%.*}.txt rm adress1_${fich%.*}.txt rm adress_text.csv rm adress1_text.csv rm adress2_text.csv rm adress3_text.csv else fi done }
Partager