Bonjour,
Comment contrôler l'existence d'un enregistrement par l'intermédiaire d'une table, le plus "proprement" possible ?
C'est une question générale sur la bonne façon de procéder.
Prenons un cas pour exemple :
Nous avons :
1/ un fichier (maître) dont chaque ligne est identifiée par un champ identifiant placé en première position (champ numéro 1)
2/ une table contenant tous les identifiants autorisés; cette table est en pratique un fichier dont la première colonne est la liste des identifiants valides
Que voulons nous faire ?
=> Contrôler la validité de chaque ligne du fichier maître à l'aide de la table; et ne garder que les lignes du fichier maître dont l'identifiant est présent dans la table.
Je pensais à la commande shell join pour faire cela.
Voici un petit jeu de test :
Ce qui donne à l'exécution :
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 #!/bin/bash # echo "cat fichier.csv" cat fichier.csv echo echo "cat table.csv" cat table.csv echo echo "-----------------------------------------------------------------" echo 'join -11 -21 -t";" -a1 -o 1.1 1.2 fichier.csv table.csv > zf3.csv' join -11 -21 -t";" -a1 -o 1.1 1.2 fichier.csv table.csv > zf3.csv echo echo "cat zf3.csv" cat zf3.csv echo echo "-----------------------------------------------------------------" echo 'join -11 -21 -t";" -a2 -o 1.1 1.2 fichier.csv table.csv > zf3.csv' join -11 -21 -t";" -a2 -o 1.1 1.2 fichier.csv table.csv > zf3.csv echo echo "cat zf3.csv" cat zf3.csv
La commande shell join avec l'option -a2 marcherait bien s'il n'y avait pas 4 lignes vides (
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 $ ./ztst_p1.sh cat fichier.csv a1;present_fichier_ok a3;present_fichier_ok a4;present_fichier_KOKO a5;present_fichier_ok a7;present_fichier_ok cat table.csv a1;present_table_ok a2;passé___table_KOKO a3;present_table_ok a5;present_table_ok a6;futur___table_KOKO a7;present_table_ok a8;futur___table_KOKO ----------------------------------------------------------------- join -11 -21 -t";" -a1 -o 1.1 1.2 fichier.csv table.csv > zf3.csv cat zf3.csv a1;present_fichier_ok a3;present_fichier_ok a4;present_fichier_KOKO a5;present_fichier_ok a7;present_fichier_ok ----------------------------------------------------------------- join -11 -21 -t";" -a2 -o 1.1 1.2 fichier.csv table.csv > zf3.csv cat zf3.csv a1;present_fichier_ok ; a3;present_fichier_ok a5;present_fichier_ok ; a7;present_fichier_ok ;
Comment feriez-vous ?
Partager