¿Cuáles son buenas herramientas grep para Windows? [cerrado]

289

¿Alguna recomendación sobre herramientas grep para Windows? Idealmente, los que podrían aprovechar el sistema operativo de 64 bits.

Soy consciente de Cygwin , por supuesto, y también he encontrado PowerGREP , pero me pregunto si hay gemas ocultas por ahí.

Portman
fuente

Respuestas:

204

Según las recomendaciones de los comentarios, comencé a usar grepWin y es fantástico y gratuito .


(Todavía soy fanático de PowerGREP , pero ya no lo uso).

Sé que ya lo mencionaste, pero PowerGREP es increíble .

Algunas de mis características favoritas son:

  • Haga clic derecho en una carpeta para ejecutar PowerGREP en ella
  • Usa expresiones regulares o texto literal
  • Especifique comodines para que los archivos incluyan y excluyan
  • Buscar y reemplazar
  • El modo de vista previa es bueno porque puedes asegurarte de que estás reemplazando lo que pretendes.

Ahora me doy cuenta de que las otras herramientas grep pueden hacer todo lo anterior. Es solo que PowerGREP empaqueta toda la funcionalidad en una GUI muy fácil de usar.

De la misma gente maravillosa que te trajo RegexBuddy y con quien no tengo ninguna afiliación más allá de amar sus cosas. (Cabe señalar que RegexBuddy incluye una versión básica de grep (para Windows) y cuesta mucho menos que PowerGREP).


Soluciones adicionales

Comandos existentes de Windows

Implementaciones de comandos de Linux en Windows

Herramientas Grep con una interfaz gráfica.

Herramientas Grep adicionales

Mark Biek
fuente
44
Me encantaría encontrar una interfaz gráfica de usuario de código abierto tan fácil de usar y con todas las funciones como PowerGREP, pero todavía no he encontrado una :). Tengo instalado Cygwin y también uso grep de eso bastante.
Mark Biek el
21
@Wells: el viejo * nix grep en Windows es gratuito a través de Cygwin o GnuWin32. FindStr y Find también se envían con Windows. Grep con una gran interfaz gráfica de usuario, la capacidad de reemplazar y deshacer integrado, así como muchas otras características ... sí ... eso te cuesta un poco más.
Mike Clark el
11
@Wells, @Mike Clark, @Mark Biek: Supongo que es posible que no hubiera buenas herramientas gratuitas de interfaz gráfica de usuario para Windows cuando se publicó esta respuesta, pero ya no es cierto. grepWin tiene todas las características enumeradas en esta respuesta, y puede haber otros competidores ahora también.
John Y
99
@Bueno, odiar a Windows porque una herramienta Grep cuesta $ 159 es como odiar a los autos porque las alfombrillas son caras.
md1337
99
@ Wells y upvoters: ¿Cuál es la carne? Varias otras herramientas de GREP para Windows son tan gratuitas como para Unix / Linux. De hecho, esto es lo que me encanta del ecosistema de Windows: muchos gratuitos, si ese es su criterio principal, Y el ecosistema a menudo admite desarrolladores de pago para explorar grandes cantidades de funcionalidad, como con PowerGREP. PowerGREP puede no ser la taza de té de todos (a veces su IU es abrumadora), pero su elaboración tiene utilidad.
gwideman
322

FINDSTR es bastante potente, admite expresiones regulares y tiene las ventajas de estar en todas las máquinas con Windows.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Ejemplo de uso: findstr text_to_find *o para buscar de forma recursivafindstr /s text_to_find *

Ray Hayes
fuente
2
Lo que le falta a FINDSTR es una opción para mostrar solo el recuento de líneas que contienen la cadena. (como grep -c) Si necesita esto, puede usar FIND / C.
Ra.
2
Si desea recuperar la energía FINDSTR (y su patrón no es regex), siempre podría, con una pequeña repetición, encadenar los dos comandos: findtr / s ".ini" * .rlog | find / c ".ini"
Ray Hayes
10
Findstr no tiene un soporte completo de RegEx.
caltuntas
55
.. la publicación original no pedía específicamente RegEx!
Ray Hayes
24
OK encuentra que no es grep, como señalaron algunos de los otros comentaristas. Pero ni siquiera sabía que existía, ¡así que +1 para usted, buen señor, por publicarlo!
T.Rob
107

GrepWin Gratis y de código abierto (GPL)

ingrese la descripción de la imagen aquíHe estado usando grepWin que fue escrito por uno de los chicos de tortugas. ¿El trabajo en Windows ...

http://stefanstools.sourceforge.net/grepWin.html

Shannon
fuente
2
Y es gratis y es capaz de buscar en directorios / archivos ocultos que PowerGrep no es capaz de hacer correctamente ...
Jérôme Verstrynge
3
No parece tener una interfaz de línea de comando.
Andreas Haferburg
2
Es bueno, pero solo da una línea de contexto, y no puede ver ese contexto hasta que haya terminado toda la búsqueda.
Matthew Lock
2
Parece una herramienta agradable y simple. Pero necesitaba los resultados en un archivo y no parece darme la opción de exportar. Solo por esa razón fui con AstroGrep.
Ross
no busca en pdf
JinSnow
53

Actualización de julio de 2013:

Otra herramienta grep que ahora uso todo el tiempo en Windows es AstroGrep :

AstroGrep genialidad

Su capacidad de mostrarme más que solo la búsqueda de línea (es decir, el --context = NUM ​​de un grep de línea de comandos) es invaluable.
Y es rapido. Muy rápido, incluso en una computadora vieja con disco que no es SSD (lo sé, solían hacer este disco duro con discos giratorios , llamados platos , loco, ¿verdad?)

Es gratis.
Es portátil (archivo zip simple para descomprimir).


Respuesta original de octubre de 2008

texto alternativoGnu Grep está bien

Puede descargarlo, por ejemplo, aquí: ( ftp del sitio )

Todas las opciones habituales están aquí.

Eso, combinado con gawk y xargs (incluye 'find', de GnuWin32 ), ¡y realmente puedes escribir como si estuvieras en Unix!

Vea también las opciones que estoy usando para grep recursivamente :

grep --include "*.xxx" -nRHI "my Text to grep" *
VonC
fuente
Acabo de comenzar a buscar un reemplazo para Gnu Grep ya que la versión de Windows no parece ser capaz de manejar mis archivos de texto de 10 Mb. Simplemente se sienta allí y finge no haber encontrado nada. Si reduzco el tamaño del archivo, comienza a funcionar.
Peter M
Hola VonV, su enlace de "opciones habituales" se ha convertido en: 404 - Página no encontrada. Por favor considere editar su respuesta.
eeerahul
1
Enlace @eeerahul restaurado, y ejemplo agregado
VonC
AstroGrep es agradable, pero por desgracia actualmente carece de 'Buscar y reemplazar' característica, que es factor decisivo para mí
Łukasz Wiatrak
Carece de la función "reemplazar"
XristosK
30

El cmdlet Select-String de PowerShell estuvo bien en v1.0, pero es significativamente mejor para v2.0 . Tener PowerShell integrado en las versiones recientes de Windows significa que sus habilidades aquí siempre serán útiles, sin instalar primero algo.

Nuevos parámetros agregados a Select-String : el cmdlet Select-String ahora admite nuevos parámetros, como:

  • -Contexto: esto le permite ver líneas antes y después de la línea de coincidencia
  • -AllMatches: que le permite ver todas las coincidencias en una línea (Anteriormente, solo podía ver la primera coincidencia en una línea)
  • -NotMatch: equivalente a grep -vo
  • -Encoding: para especificar la codificación de caracteres

Me parece conveniente crear una función gcirpara Get-ChildItem -Recurse ., con inteligencia para pasar parámetros correctamente, y un alias sspara Select-String. Entonces usted escribe:

gcir * .txt | ss foo

Jay Bazuzi
fuente
3
Ejemplo de grep -R equivilante: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
jslatts
66
Me gusta mucho la funcionalidad introducida en PS, pero ¿por qué cada comando tiene que ser más largo que el programa COBOL promedio?
evilcandybag
3
@evilcandybag: Gracias al gran autocompletado, que incluye el autocompletado en los nombres de los parámetros, escribir líneas de comando de PowerShell es rápido y fácil, y puedo leer el resultado.
Jay Bazuzi
1
@jslatts: o podría usar alias y nombres de parámetros parciales y seríals . *.txt -r| sls -ca "SomeString"
Rynant
1
Es el alias existentes slspara Select-Stringrealmente demasiado larga?
Joey
23

Puede que no caiga exactamente en la categoría 'grep', pero no podría funcionar en Windows sin una utilidad llamada AgentRansack . Es una utilidad "buscar en archivos" basada en GUI con soporte para expresiones regulares. Es muy simple hacer clic derecho en una carpeta, presionar "ransack .." y buscar archivos que contengan lo que está buscando. Extremadamente rápido también.

jasonmray
fuente
Desafortunadamente, no puede abrir el editor de texto externo en la línea correspondiente.
Pawel Furmaniak
1
Pruebe la versión de pago llamada Filelocator Pro, la mejor herramienta grep que he usado.
Ian Stanway
¿Filelocator pro hace reemplazos?
alimack
Tiene una interfaz muy agradable, ¿hace reemplazos?
alimack
También ahora se llama Filelocator lite
alimack
19

Baregrep ( Baretail también es bueno)

John Sheehan
fuente
no funciona en win7 64 bit; (
Daniel Magnusson
Estoy bastante seguro de que ya lo han solucionado. Mi principal queja contra BareTail es que no se puede "filtrar" el registro para ocultar (no solo el color) líneas irrelevantes.
Ed Brannin
1
Puede filtrar y buscar con BareTailPro, pero no con la versión gratuita (BareTail).
Clay
Estoy bastante seguro de que no lo han solucionado hasta ahora, ya que no se ha actualizado desde 2006.
alldayremix
44
Funciona bien en Windows 7 Pro 64bit aquí.
cb88
17

Han pasado un par de años desde que hizo la pregunta, pero le recomendaría AstroGrep ( http://astrogrep.sourceforge.net ).

Es gratis, de código abierto y tiene una interfaz simple. Lo uso para buscar código todo el tiempo.

jj.
fuente
pero no busca en pdf
JinSnow
16

PowerShell ha sido mencionado varias veces. Así es como realmente lo usarías de una manera grepish:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

Busca recursivamente todos los archivos de texto en el árbol de directorios actual SomeStringcon mayúsculas y minúsculas.

Aún mejor, ejecuta esto:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Entonces hazlo:

pgrep SomeStringToSearch *.txt

Luego, para hacerlo realmente mágico, agregue el alias de función a su perfil de PowerShell y casi puede mitigar el dolor de no tener las herramientas de línea de comando adecuadas.

jslatts
fuente
14

Cygwin incluye grep. Todas las herramientas GNU y las cosas de Unix funcionan muy bien en Windows si instala Cygwin.

http://www.cygwin.com/

Corey Goldberg
fuente
14

ack funciona bien en Windows (si tienes Perl ). Lo encuentro mejor que grep para muchos usos.

Peter Mortensen
fuente
14

Git en Windows = grep en cmd.exe

Me acabo de enterar de que instalar Git te dará algunos comandos básicos de Linux: cat, grep, scp y todos los demás buenos.

Instale, luego agregue la carpeta Git bin a su RUTA y luego su cmd.exe tiene una funcionalidad básica de Linux.

http://code.google.com/p/msysgit/downloads/list?can=3

Daniel Magnusson
fuente
eso lo hace ! perfecto ahora tengo grep en el sistema sin herramientas de terceros.
himanshuxd
10

dnGREP es una herramienta grep de código abierto para Windows. Es compatible con una serie de características interesantes que incluyen:

  • Deshacer para reemplazar
  • Posibilidad de buscar haciendo clic derecho en la carpeta en el explorador
  • Opciones de búsqueda avanzada como búsqueda fonética y xpath
  • Buscar dentro de archivos PDF, archivos y documentos de Word

En mi humilde opinión, también tiene una interfaz agradable y limpia :)

stankovski
fuente
1
He probado algunas de las herramientas grep sugeridas y, para mí, gana dnGrep.
flobadob
Busca en pdf pero no en epub
JinSnow
Editar: puede buscar epub. Debe agregarlo así: github.com/dnGrep/dnGrep/issues/200
JinSnow
7

Siempre uso WinGREP , pero he tenido problemas al no soltar archivos.

Tom Kidd
fuente
2
He usado wingrep desde hace varios años, es muy bueno, con la excepción de que el directorio de seleccionar las cajas son demasiado pequeñas
Cruachan
La licencia requiere que pague por ella después de una evaluación de 30 días.
chip
Tiene una característica agradable que muchas herramientas grep no tienen, la capacidad de invertir coincidencias. Útil para encontrar archivos HTML sin algo en ellos, por ejemplo.
Matthew Lock
Sin embargo, he notado una característica muy molesta de WinGrep. Parece mantener un bloqueo de archivo en todas las coincidencias que se realizan, por lo que si intenta eliminar uno de esos archivos en el Explorador de Windows, no podrá hacerlo hasta que cierre WinGrep.
Matthew Lock
Si pudiera buscar en los resultados de búsqueda, reduciendo aún más la lista, sería una herramienta ideal para mí.
Shamil
7

Bueno, al lado del puerto de Windows del GNU grep en:

http://gnuwin32.sourceforge.net/

también está disponible el grep de Borland (muy similar a GNU one) en el compilador gratuito C ++ de Borland (es un programa gratuito con herramientas de línea de comandos).

Milan Babuškov
fuente
7

He utilizado con éxito las utilidades de GNU para Win32 durante bastante tiempo y tiene un buen grep, así como la cola y otras útiles utilidades de gnu para win32. Evito el shell empaquetado y simplemente uso los ejecutables directamente en el símbolo del sistema win32.

La cola que viene empaquetada es también una muy buena aplicación.

usuario17314
fuente
6

Soy el autor de Aba Search and Replace. Al igual que PowerGREP, admite expresiones regulares, guardando patrones para su uso posterior, deshacer para reemplazos, vista previa con resaltado de sintaxis para HTML / CSS / JS / PHP, diferentes codificaciones, incluidas UTF-8 y UTF-16.

En comparación con PowerGREP, la GUI está menos abarrotada. Aba comienza a buscar instantáneamente mientras escribe el patrón (búsqueda incremental), para que pueda experimentar con expresiones regulares e inmediatamente ver los resultados.

Eres bienvenido a probar mi herramienta; Estaré feliz de responder cualquier pregunta.

Peter Kankowski
fuente
4

Quería una herramienta grep gratuita para Windows que le permitiera hacer clic derecho en una carpeta y hacer una búsqueda de expresiones regulares de cada archivo, sin ninguna pantalla molesta.

La siguiente es una solución rápida basada en lo findstrmencionado en una publicación anterior.

Cree un archivo de texto en algún lugar de su disco duro donde guarde herramientas de larga duración. Cambie el nombre a .bat o .cmd y pegue lo siguiente en él:

@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"

Luego vaya a la carpeta SendTo. En Windows 7, busque %APPDATA%\Microsoft\Windows\SendToy arrastre un acceso directo del archivo por lotes a esa carpeta SendTo.

Cambié el nombre del acceso directo a 1 GREPpara mantenerlo en la parte superior de la lista SendTo.

Lo que me gustaría hacer a continuación con esto es canalizar la salida a findstrtravés de algo que generaría un archivo html para que pueda hacer clic en cada línea de salida para abrir ese archivo. Además, no creo que funcione con accesos directos a carpetas. Tendría que inspeccionar el parámetro y ver si contiene ".lnk".

Philip Beck
fuente
3

UnxUtils es el que uso, funciona perfectamente para mí ...

Johan
fuente
3

Usé el grep de Borland durante años, pero acabo de encontrar un patrón que no coincide. Eeeks ¿Qué más no ha encontrado a lo largo de los años? Escribí un reemplazo simple de búsqueda de texto que hace una recursión como grep: es FS.EXE en la falsificación de origen.

grep falla ...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

Windows FindStr funciona ...

C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG:    AADD(mPRINTER,   TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG:               IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG:                   REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
Jerry Lusa
fuente
3

Mi herramienta de elección es el nombre apropiado de Windows Grep :

  • GUI simple y agradable
  • admite búsqueda y reemplazo
  • puede mostrar las líneas alrededor de las líneas encontradas
  • puede buscar dentro de columnas en CSV y archivos de ancho fijo
John N
fuente
Desafortunadamente descontinuado, lo he usado por años.
alimack
@alimack Sí, me di cuenta de esto recientemente. Sin embargo, la herramienta aún funciona (al menos en Windows 7), y aún se puede descargar desde CNET. Una pena, fue una herramienta bastante buena.
John N
Buscando un reemplazo, PowerGREP interfaz prometedora pero fea y muy costosa. Probé grepWin, demasiado básico, Filelocator no parece reemplazar el texto. Las sugerencias son bienvenidas, particularmente como ver resultados antes de comprometerme a reemplazar.
alimack
2

La cadena de selección de PowerShell es similar, no tiene las mismas opciones y semántica, pero sigue siendo poderosa.

Jim Deville
fuente
2

Si desea una herramienta de Windows Grep fácil de usar, creé una llamada P-Grep que he puesto a disposición para su descarga gratuita desde mi sitio web: www.adjutantit.com - menú de inicio, descargas.

Windows Grep parecía tener problemas con una gran cantidad de archivos, así que escribí el mío, lo que parece más confiable. Puede seleccionar una carpeta, hacer clic derecho y enviarla a P-Grep. La carpeta sendto no se actualiza durante la instalación.

John Pember
fuente
2

Otra buena opción es MSYS . Le brinda un montón de otras utilidades GNU para permitirle ser más productivo.

Día D
fuente
1

He estado usando AJC Grep diariamente durante años. La única limitación importante que he encontrado es que las rutas de archivo están limitadas a 255 caracteres y se detiene cuando encuentra uno, en lugar de solo emitir una advertencia. Es molesto pero no sucede muy a menudo.

Lo uso en Windows 7 Ultimate de 64 bits, por lo que sus credenciales de 64 bits están bien.

CrispinH
fuente
1

GREP para Windows

Lo he estado usando por siempre y afortunadamente todavía está disponible. Es súper rápido y muy pequeño.

bbrown
fuente
¿Hay incluso una GUI? Solo lo uso desde la línea de comandos, así que nunca me di cuenta.
bbrown
Estaba buscando una manera simple de mostrar líneas antes y después del partido y este lo hizo. Por ejemplo: ejecute 'netstat -anb | grep -B1 22 'para saber qué programas escuchan el puerto 22.
Jan Ehrhardt
0

Si ninguna de las soluciones es lo que está buscando, ¿tal vez podría escribir un contenedor para FindStr que haga exactamente lo que necesita?

FindStr es bastante bueno de todos modos, por lo que solo debería activar una GUI (si lo desea) y proporcionar algunas características adicionales (como combinarlo con Buscar para encontrar el recuento de archivos que contienen una cadena especificada [mencionada anteriormente]).

¡Esto, por supuesto, asume que tienes el requisito, el tiempo y la inclinación para hacerlo!

Stefan
fuente
0

Tengo Cygwin instalado en mi máquina y pongo el directorio bin de Cygwin en mi ruta ambiental, por lo que Cygwin grep funciona de manera normal en una línea de comando que resuelve todas mis necesidades de scripts para grep en este momento.

Peter Mortensen
fuente