web-dev-qa-db-fra.com

Extraire uniquement Word entier à l'aide de grep

J'ai un gros fichier texte. J'ai besoin d'extraire toutes les lignes qui contiennent le mot exact "DUSP1". Voici un exemple des lignes:

9606    ENSP00000239223 DUSP1   BLAST
9606    ENSP00000239223 DUSP1-001 Ensembl

Je veux récupérer la première ligne mais pas la seconde.

J'ai essayé plusieurs commandes comme:

grep -E "^DUSP1"
grep '\<DUSP1\>'
grep '^DUSP1$'
grep -w DUSP1

Mais aucun ne semble fonctionner. Quelle option dois-je utiliser?

17
Titus Pullo

Le problème auquel vous êtes confronté est qu'un tiret (-) est considéré par grep comme un délimiteur Word.

Vous devriez essayer cette commande:

grep '\sDUSP1\s' file

pour vous assurer qu'il y a des espaces autour de votre mot.

16
Gilles Quenot

Si vous voulez grep exactement tout le Word, vous pouvez utiliser les limites de Word comme ceci:

grep '\bDUSP1\b'

Cela correspond au mot exact au début et à la fin.

32
Phitherek_

en ajoutant à ce que Sputpick a dit, ça pourrait être ça ou:

grep '\sDUSP1$' file 

si le DUSP1 est la fin de la ligne.

1
indradip