J'ai besoin de données d'un file csv qui n'est pas présent dans le deuxième file csv

Par exemple: J'ai un file CSV (premier file) avec datatables ci-dessous (verticalement):

1 2 3 4 5 6 

Deuxième CSV avec datatables ci-dessous (verticalement):

 5 6 7 8 

Je veux mon file résultant (l'action doit être exécutée en utilisant le script de shell Unix) pour afficher uniquement les valeurs (verticalement) dans le premier file mais pas dans le second file:

 1 2 3 4 

En supposant que les files sont sortingés, vous pouvez utiliser la command comm pour comparer les 2 files et afficher les résultats qui se trouvent dans le file1 mais pas dans le file2 .

 $ comm -23 file1 file2 1 2 3 4 

Le commutateur -23 indique à comm de supprimer les lignes qui ne sont que dans le file2 ( -2 ) et les lignes qui se trouvent dans les deux ( -3 ).

Utilisez la command suivante:

diff file1 file2 | grep '<' | cut -c3-

Le diff prend la différence des files file1 et file2, puis nous grep '<' la sortie de la première command pour get les lignes qui appartiennent au premier file seulement. La sortie est ensuite amenée à cut -c3- pour tronquer les deux premiers caractères afin que '<' et '' soient éliminés.

Passez un file en tant que model à grep :

 grep -vwFf 2.csv 1.csv 1 2 3 4 

De l' man grep :

  -f FILE, --file=FILE Obtain patterns from FILE, one per line. The empty file contains zero patterns, and therefore matches nothing. (-f is specified by POSIX.) -w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching subssortingng must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore. -F, --fixed-ssortingngs Interpret PATTERN as a list of fixed ssortingngs, separated by newlines, any of which is to be matched. (-F is specified by POSIX.) -v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)