Correspondance exacte mot à l'aide de grep
J'ai une obligation de recherche d'un mot exact et imprimer une ligne. Il est de travail si je n'ai pas de .
(points) dans la ligne.
$cat file
test1 ALL=ALL
w.test1 ALL=ALL
$grep -w test1 file
test1 ALL=ALL
w.test1 ALL=ALL
C'est de donner la deuxième ligne aussi, et je veux seulement les lignes contenant le mot exact test1
.
- Devrait-il être
grep -e '(^| )test1( |$)' file
, peut-être? Je suis un peu confus par ce que vous entendez par 'le mot' ici; parce que, oui,w.test
est compensée par'[[:<:]]test1[[:>:]]'
modèle.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Cela indique que tout ce qui commence par le mot test1 que la première ligne. Maintenant, cela ne fonctionne pas si vous avez besoin à cette fin dans le milieu de la ligne, mais vous n'étiez pas très précis sur ce. Au moins, dans l'exemple donné le ^ fonctionnera.
grep -e '(^| )test1( |$)' file
Pour votre échantillon, vous pouvez spécifier le début de la ligne avec un
^
et de l'espace avec\s
dans l'expression régulièreCela dépend de ce que d'autres délimiteurs vous pourriez avoir besoin pour faire de même.
Je sais que je suis un peu tard, mais j'ai trouvé cette question et de la pensée de répondre.
Un mot est défini comme une séquence de caractères séparés par des espaces.
donc, je pense que cela va fonctionner
grep -E '+test1|^test1' fichier
cette recherche les lignes qui commencent par test1 ou les lignes de test précédé par au moins un espace. désolé je pouvais trouver une meilleure façon, si quelqu'un peut s'il vous plaît me corriger 🙂
test11
ainsi. Je vous conseille d'utiliser l'-w (word grep option): grep -w test1Vous pouvez prendre ci-dessous comme exemple de fichier de test.
Exécuter ci-dessous expression régulière pour rechercher un mot commençant par test1 et une ligne qui a un mot test1 dans entre de ligne aussi.