Besoin d'aide expression simple avec grep

Résolu
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
Configuration: Windows XP
Firefox 2.0.0.10

5 réponses

  1. Modérateur
    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
    ;-))
    1. Contributeur
      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
      1. Merci de vos réponses

        mais il semble qu'avec sort et uniq, ça me supprime seq1 mais également seq10, non ?
        1. Modérateur
          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) " ;-))