Grepping pour les mots exacts avec UNIX
Je recherche Exacte de mot de motif dans Unix.
Exemple: Log.txt
fichier contient le texte suivant:
aaa
bbb
cccaaa ---> this should not be counted in grep output looking for aaa
Je suis à l'aide de code suivant:
count=$?
count=$(grep -c aaa $EAT_Setup_BJ3/Log.txt)
Ici la sortie doit être ==> 1 non 2, à l'aide de code ci-dessus, j'obtiens 2 en sortie.
Quelque chose est manquant, donc quelqu'un peut-il m'aider pour le ce s'il vous plaît?
Ce qui est
count=$?
censé faire? Il n'est certainement pas à compter le nombre de matchs. Il enregistre grep de l'état de sortie.
OriginalL'auteur Bhushan J | 2013-04-02
Vous devez vous connecter pour publier un commentaire.
Limite de mot correspondant est une extension du standard POSIX utilitaire grep. Il peut être disponible ou non. Si vous voulez la recherche pour les mots de façon portable, je vous suggère de regarder dans perl au lieu de cela, où que vous pouvez utiliser
Je vous remercie pour votre utile d'observation. J'ai ajusté les regex en conséquence.
OriginalL'auteur Jens
Utiliser l'option mot entier:
De la
grep
manuel:Comme l'indique le commentaire
-w
est une extension GNU. Avec un non GNU grep, vous pouvez utiliser leword boundaries
:Notez que-w est un GNUism pas une norme POSIX grep option.
Notez que la limite de mot de correspondance avec
\<...\>
est pas POSIX. Un plus "portable" solution serait de perl un linerIci, j'ai ma face à Problème avec grep, j'ai utilisé le code mentionné ci-dessus : grep -c -w aaa $Log.txt ==> mais Sa compte aussi pour les mots comme : ccc-aaa etc.. je veux compter uniquement pour les aaa modèle srtictly seulement pas pour tel, bbb aaa ou ccc_aaa modèles... donc, tout 1 aider moi s'il vous plaît?
Pour ce que ça vaut, j'ai juste essayé
-w
sur Solaris, AIX, et Linux, et il a travaillé sur tous les 3.\<\>
n'a pas (fonctionne sur un système Solaris, AIX ne l'aime pas).OriginalL'auteur Atropo