Filtrer résultat d'un grep

Résolu
Bonjour,
J'aurais besoin d'un petit coup de pouce!
Quand je recherche quelque chose dans un fichier texte sous linux, j'utilise cette commande :
grep "[mot clé]" [fichier texte] |grep -v "[mot clé à exclure]"

S'affiche alors toutes les occurrences correspondant à ma recherche. Cependant si une même occurrence apparait x fois dans le fichier, elle s'affiche x fois dans le résultat de ma recherche.

Ce que j'aimerais donc, c'est que ma recherche ne retourne qu'un résultat par occurrence.

Exemple 1 (résultat obtenu) :
$grep "chant" log.txt |grep -v "ent"
chantes
chantons
chant
chant
chantez
chantes

Exemple 2(résultat désiré) :
$grep "chant" log.txt |grep -v "ent" |"commande magique"
chantes
chantons
chant
chantez

Auriez-vous une idée?
Merci d'avance!
Bouboune
Configuration: Windows XP
Firefox 3.0

1 réponse

  1. Modérateur
    Salut,

    Si fichier déjà trié :

    grep "chant" log.txt |grep -v "ent" |uniq

    ou (si pas trié) :

    grep "chant" log.txt |grep -v "ent" |sort -u

    ;-))
    1
    1. Merci ça marche!
      Par contre je n'ai pas vraiment compris l'histoire du "trié" et "non trié" :s
      0
    2. Modérateur
      @BoubouneLa commande uniq ne peut évaluer le résultat que si le fichier de départ est trié, la comparaison se basant sur les lignes consécutives...

      Un exemple pour illustrer :

       ssh$ echo -e "A\nB\nB\nC\nB\nD\nD\nD\nA\nC"
      A
      B
      B
      C
      B
      D
      D
      D
      A
      C
      
       ssh$ echo -e "A\nB\nB\nC\nB\nD\nD\nD\nA\nC" | uniq
      A
      B
      C
      B
      D
      A
      C
      
       ssh$ echo -e "A\nB\nB\nC\nB\nD\nD\nD\nA\nC" | sort -u
      A
      B
      C
      D
      
       ssh$ echo -e "A\nB\nB\nC\nB\nD\nD\nD\nA\nC" | sort | uniq
      A
      B
      C
      D
      
       ssh$

      ;-))
      0
    3. @jipicyok! j'ai ma réponse!

      Merci beaucoup pour cette réactivité!
      0