Estoy usando el siguiente comando para grep cosas en subdirecciones
find . | xargs grep -s 's:text'
Sin embargo, esto también encuentra cosas como <s:textfield name="sdfsf"...../>
¿Qué puedo hacer para evitarlo y encontrar cosas como <s:text name="sdfsdf"/>
O para el caso ... también encuentra <s:text somethingElse="lkjkj" name="lkkj"
básicamente s:text
y name
debería estar en la misma línea ....
Respuestas:
Desea que la
-w
opción especifique que es el final de una palabra.find . | xargs grep -sw 's:text'
fuente
Úselo
\b
para hacer coincidir "límites de palabras", lo que hará que su búsqueda coincida solo con palabras completas.Entonces tu grep se vería algo así como
agregar colores y números de línea también puede ayudar
De http://www.regular-expressions.info/wordbo limits.html :
fuente
Puede eliminar el
xargs
comando haciendo una búsqueda grep de forma recursiva. Y normalmente no necesita la bandera 's'. Por lo tanto:fuente
podría probar rg, https://github.com/BurntSushi/ripgrep :
Deberías hacerlo
fuente
grep
esto no es particularmente convincente o satisfactorio, especialmente dado quegrep
tiene la misma opción.Si solo desea filtrar la parte del texto restante, puede hacerlo.
xargs grep -s 's:text '
Esto debería encontrar solo
s:text
instancias con un espacio después de la última t. Si necesita encontrars:text
instancias que solo tengan un elemento de nombre, canalice sus resultados a otragrep
expresión o use regex para filtrar solo los elementos que necesita.fuente