Jeux de données
Nous allons utiliser un jeux de fichier pour illustrer les différents type de merge.
cat produits.txt ID_PRD NOM DESCRIPTION ID_PRD1 Prd1 Desc prd1 ID_PRD2 Prd2 Desc prd2 ID_PRD3 Prd3 Desc prd3 ID_PRD4 Prd4 Desc prd4 ID_PRD5 Prd5 Desc prd5
cat stocks.txt ID_PRD QUANTITE ID_PRD1 10 ID_PRD2 20 ID_PRD3 30 ID_PRD4 40 ID_PRD5 50
cat commandes.txt ID_CMD ID_PRD ID_CMD1 4 ID_CMD2 4 ID_CMD3 4 ID_CMD4 2 ID_CMD5 3
Fusion simple
La commande "join" fusionne les fichiers, avec comme critère par défaut la première colonne, dans notre cas le ID_PRD. Seuls les lignes avec le ID_PRD présent dans les deux fichiers sont affichées.
join produits.txt stocks.txt ID_PRD NOM_PRD DESCRIPTION QUANTITE ID_PRD1 Prd1 Desc prd1 10 ID_PRD2 Prd2 Desc prd2 20 ID_PRD3 Prd3 Desc prd3 30 ID_PRD4 Prd4 Desc prd4 40 ID_PRD5 Prd5 Desc prd5 50
Précisons à la commande join les colonnes à afficher : du fichier premier fichier, uniquement la colonne numéro 1, du deuxième fichier uniquement la colonne numéro 2 :
join -o 1.1 2.2 produits.txt stocks.txt ID_PRD QUANTITE ID_PRD1 10 ID_PRD2 20 ID_PRD3 30 ID_PRD4 40 ID_PRD5 50
Précisons à la commande join les colonnes à afficher : du fichier premier fichier, uniquement les colonnes 1 et 2, du deuxième fichier uniquement la colonne numéro 2 :
join -o 1.1 1.2 2.2 produits.txt stocks.txt ID_PRD NOM_PRD QUANTITE ID_PRD1 Prd1 10 ID_PRD2 Prd2 20 ID_PRD3 Prd3 30 ID_PRD4 Prd4 40 ID_PRD5 Prd5 50
Autres exemples, chercher les lignes manquantes entre deux fichiers
$ cat file1.txt
ID;STATUS
1;EXPORTE
2;EXPORTE
3;EXPORTE
4;REVOQUE
6;EXPORTE
$ cat file2.txt
ID;STATUS
1;IMPORTE
3;EXPORTE
5;REVOQUE
6;EXPORTE
$ grep -F -v -x -f file1.txt file2.txt
1;IMPORTE
5;REVOQUE
$ grep -F -v -x -f file2.txt file1.txt
1;EXPORTE
2;EXPORTE
4;REVOQUE
$ grep -F -x -f file2.txt file1.txt
ID;STATUS
3;EXPORTE
6;EXPORTE
$ grep -F -x -f file1.txt file2.txt
ID;STATUS
3;EXPORTE
6;EXPORTE
Explication :
-v
(show non-matching lines), -x
(match whole lines) and -f
(read patterns from file) options
Without the -F
flag, grep
interprets PATTERN,
Biblio
https://bioinfo-fr.net/fusionner-des-fichiers-entre-eux-la-commande-join