Extraire uniquement les mots entiers à l'aide de grep
J'ai un gros fichier texte. J'ai besoin d'extraire toutes les lignes qui contient le mot exact "DUSP1".
Voici un exemple de 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 d'entre eux semblent fonctionner. Quelle option dois-je utiliser?
- Comment serait le mot exact" défini? Et votre 3ème exemple serait seulement de trouver des lignes avec seulement le mot "DUSP1" ... Si vous voulez des lignes avec "^DUSP1[[:space:]]+" ?
- Pourriez-vous fournir des échantillons de contenu de fichier. Les 2e, 3e, 4e commandes fonctionne pour moi.
Vous devez vous connecter pour publier un commentaire.
Le problème auquel vous êtes confronté est qu'un dash (-) est considéré par
grep
comme un délimiteur de mot.Vous devriez essayer cette commande :
pour s'assurer qu'il y a des espaces autour de votre parole.
Si vous voulez grep exactement le mot en entier, vous pouvez utiliser les limites de mot comme ceci:
Cela correspond exactement au mot au début et à la fin.
setting=DUSP1
etmy/folder/to/DUSP1
, mais pasDUSP123
en ajoutant à ce que sputpick dit, il peut soit être que ou:
si le DUSP1 est la fin de la ligne.