Linux bash liste lignes non présentes fichie2
sbouli
Messages postés
208
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
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) :
[email protected]
[email protected]
[email protected]
fichier 2 :
[email protected]
résultat espéré ... :
[email protected]
[email protected]
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) :
[email protected]
[email protected]
[email protected]
fichier 2 :
[email protected]
résultat espéré ... :
[email protected]
[email protected]
En vous remerciant !
Stéphane
A voir également:
- Linux bash liste lignes non présentes fichie2
- Liste déroulante excel - Guide
- Linux - Guide
- Liste code ascii - Guide
- R-linux - Télécharger - Sauvegarde
- Liste déroulante en cascade - Guide
10 réponses
Salut,
Edit : $(cat fich* | sort | uniq -d) => "$(sort fich* | uniq -d)"
[tmpfs]$ cat fich1 [email protected] [email protected] [email protected] [tmpfs]$ cat fich2 [email protected] [tmpfs]$ grep -v "$(sort fich* | uniq -d)" fich1 [email protected] [email protected] [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 protected]: 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 protected]: 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
[email protected]
[email protected]
[email protected]
root@toto:# cat test2
[email protected]
root@toto:# grep -v "$(sort test* | uniq -d)" test1
root@toto:# $(cat test* | sort | uniq -d) => "$(sort test* | uniq -d)"
-bash: [email protected] : commande introuvable
root@toto:#
au secours ....
Stéphane
root@toto:# cat test1
[email protected]
[email protected]
[email protected]
root@toto:# cat test2
[email protected]
root@toto:# grep -v "$(sort test* | uniq -d)" test1
root@toto:# $(cat test* | sort | uniq -d) => "$(sort test* | uniq -d)"
-bash: [email protected] : commande introuvable
root@toto:#
au secours ....
Stéphane
jp@MDK:~/tmpfs ssh$ cat test1 [email protected] [email protected] [email protected] jp@MDK:~/tmpfs ssh$ cat test2 [email protected] jp@MDK:~/tmpfs ssh$ grep -v "$(sort test* | uniq -d)" test1 [email protected] [email protected] 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
ben non aucun changements ... :
# cat test1 [email protected] [email protected] [email protected] # cat test2 [email protected] # grep -v "$(sort test* | uniq -d)" test1 #
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.
Désolé pour le delais j'étais parti manger :)
stéphane
# set -xv; grep -v "$(sort test* | uniq -d)" test1; set - sort test* | uniq -d ++ sort test1 test2 ++ uniq -d + grep -v ' [email protected]' test1 + set - #
stéphane
et voila :
c'est bien le retour à la ligne qui pioche ...
grep -v '
[email protected]' test1
stéphane
# grep -v '[email protected]' test1 [email protected] [email protected] #
c'est bien le retour à la ligne qui pioche ...
grep -v '
[email protected]' test1
stéphane
et voila :
EDIT : si je sors les 2 lignes vierge en bas des fichiers j'ai bien :
stéphane
# sort test* | uniq -d [email protected] #
EDIT : si je sors les 2 lignes vierge en bas des fichiers j'ai bien :
# cat test1 [email protected] [email protected] [email protected] # cat test2 [email protected] # grep -v "$(sort test* | uniq -d)" test1 [email protected] [email protected] #
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