Bonjour à tous,
j'ai un petit script qui me permet de rejoindre des données de deux fichiers différents mais ce script ne rentre pas dans la boulce for et je comprends pas pourquoi. Pourriez vous m'aider a élucider ce mystère ?
Merci à tous,
voici le script :
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 #!/bin/ksh # Extraction des cles iuniquement echo "extraction des cles du fichier 1" cut -f2 fichier1 > cles.txt # tri du fichier des cles(necessaire pour join) echo "tri de fichier1" sort cles.txt -o cles.txt # tri du 2eme fichier, sur le 5eme champ (necessaire pour join) echo "tri de fichier2" cut -f5 fichier2 > cles_2.txt sort cles_2.txt -o cles_2.txt # Jointure du fichier des cles avec le fichier de donnees pour marquage des lignes # * sur le champ 1 du fichier des cles et le champ 5 du 2eme fichier # * en marquant les lignes non reconnues # on ne conserve que les lignes qui n'ont pas trouvee correspondance echo "jointure" join -1 1 -2 1 -t "\t" -o "1.1 2.1" -a2 -e "NONMATCHED" cles.txt cles_2.txt | egrep "^NONMATCHED" > jointure.txt echo "selection" cut -f2- jointure.txt > inter.txt cut -f2 -d'\' inter.txt > coup.txt cat coup.txt | grep -v "^NONMATCHED" > coup_v2.txt LIST=$(cat coup_v2.txt | grep -i -v '[a-z][a-z]*' > coup_v3.txt) # A present, on ne conserve que les champs du 2eme fichier (ceux d'indice 2 et plus) echo "regroupement" for i in $LIST do liste=`cat coup_v3.txt | grep $i` echo $liste >> resultat.txt done # un peu de nettoyage de nettoyage a present echo "nettoyage" rm -f inter.txt rm -f cles_2.txt rm -f cles.txt rm -f fichier2.temp rm -f jointure.txt rm -f coup.txt rm -f coup_v2.txt rm -f coup_v3.txt
Partager