Blue Flower

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