Comment grep pour le monde entier
Je suis l'aide de la commande suivante à grep trucs dans les sous-dossiers
find . | xargs grep -s 's:text'
Cependant, ce trouve aussi des trucs comme <s:textfield name="sdfsf"...../>
Que puis-je faire pour éviter que, jusqu'à ce qu'il trouve des trucs comme <s:text name="sdfsdf"/>
OU qui que ce soit....trouve aussi <s:text somethingElse="lkjkj" name="lkkj"
fondamentalement s:text
et name
devrait être sur la même ligne....
- Personne n'a lu que le titre "comment grep pour l'ensemble de la monde "?
- pour le lulz 🙂
- non, surtout parce que j'ai Googlé "grep mot entier".
Vous devez vous connecter pour publier un commentaire.
Vous voulez le
-w
option pour spécifier que c'est la fin d'un mot.find . | xargs grep -sw 's:text'
Utilisation
\b
pour correspondre sur "les limites de mot", qui fera de votre correspondance de recherche sur des mots entiers seulement.De sorte que votre grep ressemblerait à quelque chose comme
ajoutant de la couleur et de la ligne de numéros peuvent aider trop
De http://www.regular-expressions.info/wordboundaries.html:
Vous pouvez laisser les
xargs
commande en faisant un grep recherche récursive. Et que vous n'avez normalement pas besoin de le ' drapeau. Donc:vous pouvez essayer de rg, https://github.com/BurntSushi/ripgrep :
devrait le faire
Si vous voulez juste pour filtrer le reste du texte, que vous pouvez faire cela.
xargs grep -s 's:text '
Cela devrait trouver seulement
s:text
cas, avec un espace après le dernier t. Si vous avez besoin de trouvers:text
instances qui ont seulement un nom d'élément, tuyau de vos résultats à un autregrep
expression, ou d'utiliser des regex pour filtrer uniquement les éléments dont vous avez besoin.