diff --git a/csvCompare_list1notin2.exe b/csvCompare_list1notin2.exe new file mode 100644 index 0000000..ebacf34 --- /dev/null +++ b/csvCompare_list1notin2.exe Binary files differ diff --git a/csvCompare_list1notin2.sh b/csvCompare_list1notin2.sh new file mode 100644 index 0000000..75153ed --- /dev/null +++ b/csvCompare_list1notin2.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# Ce script compare 2 fichiers au format .csv avec des séparateurs ";" +# Le fichier 1 est le fichier de référence auquel on va comparer le fichier 2 +# On va lister les lignes du fichier 1 dont la valeur de la colonne ci n'est pas trouvée dans la colonne cj du fichier 2 +# +# Les fichiers sont triés et dédoublonnés à la volée sur la bonne colonne +# Les retours à la ligne sont codés à la volée au format Unix +# Le script prend en compte d'éventuelles lignes d'entete de colonne +# Date: 30/7/2024 +# +# Ce script est appelable par l'executable du même nom qui est une interface graphique écrite en Python +# Il suffit juste que le script et l'executable soient dans le même répertoire et que Git Bash soit installé +# +# Auteur: David Castelain + + +# Debuggage +#set -x + + +# Verification du nombre d'arguments +if [ "$#" -ne 7 ]; then + echo "SYNTAXE: $0 [file1] [file1_numcol] [file1_nb_lines_header] [file2] [file2_numcol] [file2_nb_lines_header] [file_dest]" + echo "Extrait les lignes de file1 dont la valeur de la colonne file1_numcol n'existe pas dans la colonne file2_numcol de file2" + echo "file1 et file2 doivent être au format .csv avec des séparateurs ';'" + echo "file1_numcol: numéro de colonne à comparer du fichier 1" + echo "file1_nb_lines_header: nombre de lignes d'entête à ignorer dans le fichier 1" + echo "EXEMPLE 1: $0 droits_onglet_issn.csv 3 1 masterlist.csv 1 1 issn_manquants_master-droits.csv" + echo "EXEMPLE 2: $0 elsevier_2023_issn.csv 3 1 FileCount_Couperin2023.csv 1 1 elsevier2023_issn_manquants_master-droits.csv" + exit 1 +fi + + +file1=$1 +file1_col=$2 +file1_nb_lines_header=$(expr $3 + 1) +file2=$4 +file2_col=$5 +file2_nb_lines_header=$(expr $6 + 1) +file_dest=$7 + +join -t";" -v 1 -1 ${file1_col} -2 ${file2_col} \ + <(cat "${file1}" | tr -d '\r' | tail +${file1_nb_lines_header} | sed -e 's/"\([^";]*\);\([^";]*\)"/"\1.\2"/p' | sort -t";" -u -k ${file1_col},${file1_col}) \ + <(cat "${file2}" | tr -d '\r' | tail +${file2_nb_lines_header} | sed -e 's/"\([^";]*\);\([^";]*\)"/"\1.\2"/p' | sort -t";" -u -k ${file2_col},${file2_col}) > "${file_dest}" + + diff --git a/media/image1.png b/media/image1.png new file mode 100644 index 0000000..c165ad6 --- /dev/null +++ b/media/image1.png Binary files differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..2dc6380 --- /dev/null +++ b/readme.md @@ -0,0 +1,53 @@ +**csvCompare_list1notin2.exe** + +**Interface graphique exécutable sous Windows** + +**Description** + +Ce programme compare 2 fichiers au format .csv comportant des séparateurs \";\". + +La comparaison se fait uniquement sur une colonne du fichier 1 avec une colonne du fichier 2. + +Le fichier 1 est le fichier de référence auquel on va comparer le fichier 2. + +On va lister les lignes du fichier 1 dont la valeur de la colonne ci n\'est pas trouvée dans la colonne cj du fichier 2. + +**Traitements effectués** + +Les fichiers sont triés et dédoublonnés à la volée sur la bonne colonne. + +Les retours à la ligne sont codés à la volée au format Unix. + +Les caractères \";\" trouvés dans une colonne sont remplacés par des \".\" + +Le script prend en compte d\'éventuelles lignes d\'entête de colonne. + +**Installation** + +Ce programme utilise le script Shell csvCompare_list1notin2.sh + +Il suffit juste que le script et l\'exécutable soient dans le même répertoire et que Git Bash soit installé. + +Le répertoire Git va être cherché par défaut sur le chemin indiqué par la variable d\'environnement GIT_PATH sinon sur \'C:\\\\Program Files\\\\Git\'. + +**Interface graphique** + +![](./media/image1.png){width="3.1650721784776903in" height="4.814951881014873in"} + +**csvCompare_list1notin2.sh** + +Le script Shell peut également être utilisé sans l'interface graphique. + +SYNTAXE: csvCompare_list1notin2.sh \[file1\] \[file1_numcol\] \[file1_nb_lines_header\] \[file2\] \[file2_numcol\] \[file2_nb_lines_header\] \[file_dest\] + +Extrait les lignes de file1 dont la valeur de la colonne file1_numcol n\'existe pas dans la colonne file2_numcol de file2. + +file1 et file2 doivent être au format .csv avec des séparateurs \';\' + +file1_numcol: numéro de colonne à comparer du fichier 1 + +file1_nb_lines_header: nombre de lignes d\'entête à ignorer dans le fichier 1 + +EXEMPLE 1: csvCompare\_ list1notin2.sh droits_onglet_issn.csv 3 1 masterlist.csv 1 1 issn_manquants_master-droits.csv + +EXEMPLE 2: csvCompare_list1notin2.sh elsevier_2023_issn.csv 3 1 FileCount_Couperin2023.csv 1 1 elsevier2023_issn_manquants_master-droits.csv