Quiero grep para una llamada de función 'init()' en todos los archivos de JavaScript en un directorio. ¿Cómo hago esto usando grep?Cómo escapar paréntesis en grep
Particularmente, ¿cómo escapo paréntesis, ()
?
Quiero grep para una llamada de función 'init()' en todos los archivos de JavaScript en un directorio. ¿Cómo hago esto usando grep?Cómo escapar paréntesis en grep
Particularmente, ¿cómo escapo paréntesis, ()
?
Depende. Si utiliza grep regular, no escapar:
echo '(foo)'|grep '(fo*)'
que realmente tiene que escapar si desea utilizar los paréntesis, como agrupación.
Si utiliza extended regular expressions, que escapan:
echo '(foo)'|grep -E '\(fo*\)'
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()
$ echo "init(test)" | grep -Erin 'init\([^)]*\)'
1:init(test)
$ echo "initwhat" | grep -Erin 'init\([^)]*\)'
Esto es incorrecto. Igualmente emparejará "initwhatever", ya que por defecto los parens invertidos crean grupos de captura. Como dije antes, no escapas de parens con grep regular. –
Creo que esto está bien porque la '-E' es equivalente a egrep. – gkanwar
Mover a su directorio raíz (si son conscientes de donde están los archivos JavaScript son). Entonces haz lo siguiente.
grep 'init()' *.js
para grep en todas las subcarpetas recursivamente, sugiera agregar parámetro -r – hejiaming007
Si desea buscar exactamente con la cadena "init()" y utilice fgrep "init()"
o grep -F "init()"
.
Ambos harán una coincidencia de cadena fija, es decir, tratarán el patrón como una cadena simple para buscar y no como una expresión regular. Creo que también es más rápido que hacer una búsqueda de expresiones regulares.
Cuando uso grep -rin init() * en el directorio se queja de un error de sintaxis cerca del token inesperado (. ¿Cómo lo soluciono? –
Lo siento, no lo entiendo. Tengo algunos archivos javascript, con un La función init() se llama en algunos lugares en ellos. Quiero saber dónde se llama a init(), usando grep -rin init() * en el directorio ... Se queja de una sintaxis no válida cerca de (. ¿Cómo puedo escapar ( –
@Megha, solo para aclarar, ese fue un error de shell porque no citaron la expresión regular. –