Besoin d'aide expression simple avec grep

Résolu/Fermé
ludy - 30 nov. 2007 à 13:46
 ludy - 30 nov. 2007 à 14:35
Bonjour,

voilà mon pb, j'ai deux fichier du type :
seq1
seq2
seq3
... et un autre du genre
seq1
seq3

et je voudrais obtenir un nouveau fichier qui correspondrais au fichier 1 moins ce qu'il y a dans mon fichier 2 (soit dans cet exemple, seq2)
j'ai essayé
grep -v-f fichier2.txt fichier1.txt >fichier3.txt mais cela me donne la même chose que le fichier 1...
je pense qu'il sélectionne tout ce qui ne contient pas seq1(1ère ligne de fichier2) puis tout ce qui ne contient pas seq3 (2ème ligne de fichier 2) et qu'au final, je me retrouve avec tout mon fichier1...

quelqu'un saurait-il comment je dois m'y prendre ?

merci d'avance.
Ludivine

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 nov. 2007 à 13:54
Salut,

Utilises plutôt les commandes du shell telles que "sort" et "uniq" qui sont beaucoup plus adaptées à ton cas :
$ $ cat A
seq1
seq2
seq3
$ cat B
seq1
seq3
$ cat A B | sort | uniq -u
seq2
$
Pour une redirection dans un fichier écrits la commande comme ça :
cat A B | sort | uniq -u > C
;-))
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 nov. 2007 à 13:55
pourquoi ne pas utiliser la commande comm ?
NAME
comm - compare two sorted files line by line  
SYNOPSIS
comm [OPTION]... FILE1 FILE2  
DESCRIPTION

Compare sorted files FILE1 and FILE2 line by line.

With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files.

-1 suppress lines unique to FILE1 
-2  suppress lines unique to FILE2 
-3   suppress lines that appear in both files
0
Merci de vos réponses

mais il semble qu'avec sort et uniq, ça me supprime seq1 mais également seq10, non ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 nov. 2007 à 14:22
Euh... ça supprime tout ce qui est en double et ne laisse que ce qui est unique conformément à ton souhait : "je voudrais obtenir un nouveau fichier qui correspondrais au fichier 1 moins ce qu'il y a dans mon fichier 2 (soit dans cet exemple, seq2) " ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci bcp, en fait les deux marches très bien.

Bonne journée
0