Linux bash liste lignes non présentes fichie2
sbouli
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je cherche une commande me permettant d'obtenir la liste des lignes présentes dans le fichier 1 mais non présentes dans le fichier 2. Chaque ligne contient uniquement une adresse email.
j'ai essayé via la commande comm mais elle ne permet pas exactement ça.
Exemple :
fichier 1 (chaque fichier est passé par uniq et sort donc pas de doublon) :
email1@ledomaine.com
email2@ledomaine.com
email3@ledomaine.com
fichier 2 :
email2@ledomaine.com
résultat espéré ... :
email1@ledomaine.com
email3@ledomaine.com
En vous remerciant !
Stéphane
Je cherche une commande me permettant d'obtenir la liste des lignes présentes dans le fichier 1 mais non présentes dans le fichier 2. Chaque ligne contient uniquement une adresse email.
j'ai essayé via la commande comm mais elle ne permet pas exactement ça.
Exemple :
fichier 1 (chaque fichier est passé par uniq et sort donc pas de doublon) :
email1@ledomaine.com
email2@ledomaine.com
email3@ledomaine.com
fichier 2 :
email2@ledomaine.com
résultat espéré ... :
email1@ledomaine.com
email3@ledomaine.com
En vous remerciant !
Stéphane
A voir également:
- Linux bash liste lignes non présentes fichie2
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Linux reader - Télécharger - Stockage
- Site dangereux liste - Guide
10 réponses
Salut,
Edit : $(cat fich* | sort | uniq -d) => "$(sort fich* | uniq -d)"
[tmpfs]$ cat fich1 email1@ledomaine.com email2@ledomaine.com email3@ledomaine.com [tmpfs]$ cat fich2 email2@ledomaine.com [tmpfs]$ grep -v "$(sort fich* | uniq -d)" fich1 email1@ledomaine.com email3@ledomaine.com [tmpfs]$;-))
Edit : $(cat fich* | sort | uniq -d) => "$(sort fich* | uniq -d)"
Bonjour,
Je viens d'essayer la solution grep mais j'ai une erreur :
grep: email@supermegadomaine.fr: Aucun fichier ou dossier de ce type
....
répété pour pas mal d'email...
pour être sûr qu'on s'est bien compris, mon exemple ne contient que 3 lignes dans l'un et 1 dans l'autre fichier, en réalité j'ai plusieurs dizaine de millier de lignes par fichiers.
Stéphane
Je viens d'essayer la solution grep mais j'ai une erreur :
grep: email@supermegadomaine.fr: Aucun fichier ou dossier de ce type
....
répété pour pas mal d'email...
pour être sûr qu'on s'est bien compris, mon exemple ne contient que 3 lignes dans l'un et 1 dans l'autre fichier, en réalité j'ai plusieurs dizaine de millier de lignes par fichiers.
Stéphane
Ya comme un soucis ... :
root@toto:# cat test1
email1@ledomaine.com
email2@ledomaine.com
email3@ledomaine.com
root@toto:# cat test2
email2@ledomaine.com
root@toto:# grep -v "$(sort test* | uniq -d)" test1
root@toto:# $(cat test* | sort | uniq -d) => "$(sort test* | uniq -d)"
-bash: email2@ledomaine.com : commande introuvable
root@toto:#
au secours ....
Stéphane
root@toto:# cat test1
email1@ledomaine.com
email2@ledomaine.com
email3@ledomaine.com
root@toto:# cat test2
email2@ledomaine.com
root@toto:# grep -v "$(sort test* | uniq -d)" test1
root@toto:# $(cat test* | sort | uniq -d) => "$(sort test* | uniq -d)"
-bash: email2@ledomaine.com : commande introuvable
root@toto:#
au secours ....
Stéphane
jp@MDK:~/tmpfs ssh$ cat test1 email1@ledomaine.com email2@ledomaine.com email3@ledomaine.com jp@MDK:~/tmpfs ssh$ cat test2 email2@ledomaine.com jp@MDK:~/tmpfs ssh$ grep -v "$(sort test* | uniq -d)" test1 email1@ledomaine.com email3@ledomaine.com jp@MDK:~/tmpfs ssh$;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hahahaha énorme ....
donc systeme ubuntu hardy heron
shell ... sh ...??
grep --version GNU grep 2.5.3
ça répond a la demande ?
Stéphane
donc systeme ubuntu hardy heron
shell ... sh ...??
grep --version GNU grep 2.5.3
ça répond a la demande ?
Stéphane
Tu peux exécuter la commande suivante et nous coller le résultat, s'il te plaît :
set -xv; grep -v "$(sort test* | uniq -d)" test1; set -Merci.
Si tu tapes :
grep -v 'email2@ledomaine.com' test1Ca donne quoi ?
et voila :
EDIT : si je sors les 2 lignes vierge en bas des fichiers j'ai bien :
stéphane
# sort test* | uniq -d email2@ledomaine.com #
EDIT : si je sors les 2 lignes vierge en bas des fichiers j'ai bien :
# cat test1 email1@ledomaine.com email2@ledomaine.com email3@ledomaine.com # cat test2 email2@ledomaine.com # grep -v "$(sort test* | uniq -d)" test1 email1@ledomaine.com email3@ledomaine.com #
stéphane
Cependant, c'est le serpent qui se mort la queue ... si je lance la commande sur 2 fichiers avec quelques milliers de lignes, j'ai :
# grep -v "$(sort fichier?.log | uniq -d)" fichier1.log
-bash: /bin/grep: Liste d'arguments trop longue
il doit pas aimer avec beaucoup de ligne dans fichier1.log et fichier2.log ....
Stéphane
# grep -v "$(sort fichier?.log | uniq -d)" fichier1.log
-bash: /bin/grep: Liste d'arguments trop longue
il doit pas aimer avec beaucoup de ligne dans fichier1.log et fichier2.log ....
Stéphane
UP
Cependant, c'est le serpent qui se mort la queue ... si je lance la commande sur 2 fichiers avec quelques milliers de lignes, j'ai :
# grep -v "$(sort fichier?.log | uniq -d)" fichier1.log
-bash: /bin/grep: Liste d'arguments trop longue
il doit pas aimer avec beaucoup de ligne dans fichier1.log et fichier2.log ....
Stéphane
Cependant, c'est le serpent qui se mort la queue ... si je lance la commande sur 2 fichiers avec quelques milliers de lignes, j'ai :
# grep -v "$(sort fichier?.log | uniq -d)" fichier1.log
-bash: /bin/grep: Liste d'arguments trop longue
il doit pas aimer avec beaucoup de ligne dans fichier1.log et fichier2.log ....
Stéphane
Cependant, merci d'avoir pris un peu de votre temps pour moi.
Stéphane