Quiero hacer una búsqueda simple de expresiones regulares de forma recursiva a través de un directorio que no esté restringido a líneas simples.
Intenté grep and ack, pero ninguno parece apoyar esto.
Sé que no debería ser demasiado costoso desde el punto de vista computacional (en mi caso) porque mi editor de texto de elección ( Sublime Text ) puede hacerlo bien.
Solo estoy buscando una versión simple de línea de comandos de esto. Google ha aparecido pcregrep , pero parece que no puedo encontrar eso para Mac. ¿No estoy buscando en el lugar correcto?
grep
con el contexto te ayuda a encontrar lo que quieres (-C1
)?Respuestas:
Instala Homebrew y luego:
Esto te dará lo último
pcregrep
fuente
No dijiste exactamente lo que estabas buscando, así que me imagino la tarea de averiguar si el archivo contiene 112 seguido de 223, sin tener en cuenta las nuevas líneas.
Una
awk
solución ligeramente artificial :La
RS
variable contiene el separador de registros. Al establecerlo en la cadena vacía, todo el archivo se leerá como un registro.Esto probablemente será muy ineficiente de memoria en archivos grandes.
Por cierto, estoy haciendo esto en OpenBSD, pero el OS X awk debería funcionar de la misma manera.
fuente
v
yRS
. es decirawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
"pcregrep" puede referirse a un establo más antiguo
pcregrep
y uno más nuevopcre2grep
. Ambos son proporcionados por el proyecto PCRE enpcre.org
.Mac Ports proporciona el primero como parte del puerto
pcre
(estable en la versión 8.40), y el segundo como parte del puertopcre2
(actualmente versión 10.22). Instalar a través de:fuente