O que são boas ferramentas grep para Windows? [fechadas]

289

Alguma recomendação sobre as ferramentas grep para Windows? Idealmente, aqueles que poderiam aproveitar o SO de 64 bits.

Estou ciente de Cygwin , é claro, e também encontrei o PowerGREP , mas estou me perguntando se há alguma joia escondida por aí?

Portman
fonte

Respostas:

204

Com base nas recomendações dos comentários, comecei a usar o grepWin e é fantástico e gratuito .


(Ainda sou fã do PowerGREP , mas não o uso mais.)

Eu sei que você já mencionou, mas PowerGREP é incrível .

Alguns dos meus recursos favoritos são:

  • Clique com o botão direito do mouse em uma pasta para executar o PowerGREP nela
  • Use expressões regulares ou texto literal
  • Especifique curingas para arquivos para incluir e excluir
  • Pesquisar e substituir
  • O modo de visualização é bom porque você pode ter certeza de que está substituindo o que pretende.

Agora percebo que as outras ferramentas grep podem fazer todas as opções acima. Só que o PowerGREP empacota todas as funcionalidades em uma GUI muito fácil de usar.

Das mesmas pessoas maravilhosas que trouxeram para você o RegexBuddy e com quem não tenho nenhuma afiliação além de amar as coisas deles. (Observe que o RegexBuddy inclui uma versão básica do grep (para Windows) e custa muito menos que o PowerGREP.)


Soluções adicionais

Comandos existentes do Windows

Implementações de comandos do Linux no Windows

Ferramentas Grep com uma interface gráfica

Ferramentas adicionais do Grep

Mark Biek
fonte
4
Eu adoraria encontrar uma interface gráfica grep de código aberto tão fácil de usar e com todos os recursos do PowerGREP, mas ainda não encontrei uma :). Eu tenho o Cygwin instalado e uso o grep um pouco também.
Mark Biek
21
@Wells - o velho * nix grep antigo no Windows é gratuito via Cygwin ou GnuWin32. FindStr e Find também são fornecidos com o Windows. Grep com uma ótima interface gráfica, a capacidade de substituir e desfazer integrado, além de muitos outros recursos ... sim ... que custam um pouco mais.
Mike Clark
11
@ Wells, @ Mike Clark, @ Mark Biek: Suponho que é possível que não houvesse boas ferramentas gratuitas de grep de GUI para Windows quando esta resposta foi publicada, mas isso não é mais verdade. O grepWin possui todos os recursos listados nesta resposta e também pode haver outros concorrentes agora.
John Y
9
@ Bem, odiar o Windows porque uma ferramenta Grep custa US $ 159 é como odiar carros porque os tapetes são caros.
Md1337
9
@ Poços e promotores: Qual é a carne? Várias outras ferramentas de GREP para Windows são tão gratuitas quanto para unix / linux. Na verdade, é isso que eu amo no ecossistema do Windows - muitos gratuitos, se esse é o seu principal critério, E o ecossistema geralmente oferece suporte a desenvolvedores pagadores para explorar grandes quantidades de funcionalidades, como no PowerGREP. O PowerGREP pode não ser a xícara de chá de todos (às vezes, sua interface do usuário é impressionante), mas sua elaboração tem utilidade.
gwideman
322

O FINDSTR é bastante poderoso, suporta expressões regulares e tem as vantagens de já estar em todas as máquinas 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

Exemplo de uso: findstr text_to_find *ou para pesquisar recursivamentefindstr /s text_to_find *

Ray Hayes
fonte
2
O que falta ao FINDSTR é uma opção para exibir apenas a contagem de linhas que contêm a sequência. (como grep -c) Se você precisar, pode usar FIND / C.
Ra.
2
Se você deseja o poder FINDSTR de volta (e seu padrão não é regex), sempre pode, com alguma repetição pequena, encadear os dois comandos: findstr / s ".ini" * .rlog | find / c ".ini"
Ray Hayes
10
O Findstr não possui um suporte completo para RegEx.
caltuntas
5
.. a postagem original não estava solicitando especificamente o RegEx!
21411 Ray Hayes
24
OK, acha que não é grep, como alguns outros comentadores apontaram. Mas eu nem sabia que existia, então marque com +1 um bom senhor por publicá-lo!
T.Rob
107

GrepWin Gratuito e de código aberto (GPL)

insira a descrição da imagem aquiEu tenho usado o grepWin, que foi escrito por um dos caras do tortoisesvn. Faz o trabalho no Windows ...

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

Shannon
fonte
2
E é livre e é capaz de busca em escondidos diretórios / arquivos que PowerGrep não é capaz de fazer corretamente ...
Jérôme Verstrynge
3
Não parece ter uma interface de linha de comando.
Andreas Haferburg
2
É bom, mas fornece apenas uma linha de contexto, e você não pode vê-lo até concluir toda a pesquisa.
Matthew Bloqueio
2
Parece uma ferramenta agradável e simples. Mas eu precisava dos resultados em um arquivo e parece que não me dá a opção de exportar. Por esse motivo, fui com o AstroGrep.
Ross
não procura em pdf
JinSnow 13/11/2015
53

Atualização em julho de 2013:

Outra ferramenta grep que agora uso o tempo todo no Windows é o AstroGrep :

AstroGrep awesomeness

Sua capacidade de me mostrar mais do que apenas a pesquisa de linha (ou seja, --context = NUM ​​de um grep de linha de comando) é inestimável.
E é rápido. Muito rápido, mesmo em um computador antigo com unidade não SSD (eu sei, eles costumavam fazer esse disco rígido com discos giratórios , chamados de travessas , loucos, certo?)

É de graça.
É portátil (arquivo zip simples para descompactar).


Resposta original outubro de 2008

texto alternativoGnu Grep está bem

Você pode baixá-lo, por exemplo, aqui: ( site ftp )

Todas as opções usuais estão aqui.

Combinado com gawk e xargs (inclui 'find', do GnuWin32 ), e você pode realmente escrever como se estivesse no Unix!

Veja também as opções que estou usando para grep recursivamente :

grep --include "*.xxx" -nRHI "my Text to grep" *
VonC
fonte
Eu apenas comecei a procurar um substituto para o Gnu Grep, pois a versão do Windows não parece capaz de lidar com meus arquivos de texto de 10 Mb. Ele fica lá e finge não ter encontrado nada. Se eu reduzir o tamanho do arquivo, ele começará a funcionar.
31526 Peter M
Olá VonV, o seu link de "opções usuais" tornou-se: 404 - Página não encontrada. Por favor, considere editar sua resposta.
eeerahul
1
ligação @eeerahul restaurado, e adicionou exemplo
VonC
AstroGrep é bom, mas infelizmente carece actualmente de 'Localizar e substituir' característica, que é disjuntor do negócio para mim
Łukasz Wiatrak
Falta-lhe a função de "substituir"
XristosK
30

O cmdlet Select-String do PowerShell foi bom na v1.0, mas é significativamente melhor na v2.0 . Ter o PowerShell incorporado nas versões recentes do Windows significa que suas habilidades aqui sempre serão úteis, sem a instalação de algo.

Novos parâmetros adicionados ao Select-String : o cmdlet Select-String agora oferece suporte a novos parâmetros, como:

  • -Context: Permite ver as linhas antes e depois da linha de partida
  • -AllMatches: que permite ver todas as correspondências em uma linha (anteriormente, era possível ver apenas a primeira correspondência em uma linha)
  • -NotMatch: equivalente ao grep -vo
  • -Codificação: para especificar a codificação de caracteres

Acho conveniente criar uma função gcirpara Get-ChildItem -Recurse ., com smarts, para passar parâmetros corretamente e um alias sspara Select-String. Então você escreve:

gcir * .txt | ss foo

Jay Bazuzi
fonte
3
Exemplo de grep -R equivalente: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
jslatts 11/03/11
6
Gosto muito das funcionalidades introduzidas no PS, mas por que todo comando precisa ser maior que o programa COBOL médio?
evilcandybag
3
@evilcandybag: Graças ao ótimo preenchimento automático, incluindo o preenchimento automático de nomes de parâmetros, a digitação das linhas de comando do PowerShell é rápida e fácil, e posso ler o resultado.
Jay Bazuzi
1
@jslatts: ou você poderia usar apelidos e nomes de parâmetro parciais e serials . *.txt -r| sls -ca "SomeString"
Rynant
1
É o alias existentes slspara Select-Stringrealmente muito tempo?
Joey
23

Pode não estar exatamente na categoria 'grep', mas não consegui sobreviver no Windows sem um utilitário chamado AgentRansack . É um utilitário "find in files" baseado em gui com suporte a regex. É simples clicar com o botão direito do mouse em uma pasta, pressionar "ransack .." e encontrar arquivos contendo o que você está procurando. Extremamente rápido também.

jasonmray
fonte
Infelizmente, ele não pode abrir o editor de texto externo na linha relevante.
Pawel Furmaniak 25/05
1
Experimente a versão paga chamada Filelocator Pro, de longe a melhor ferramenta grep que já usei.
precisa
O Filelocator pro faz substituições?
Alimack 22/08
Tem uma interface muito boa, faz substituições?
Alimack
Também é agora chamado FileLocator Lite
alimack
19

Baregrep ( Baretail também é bom)

John Sheehan
fonte
não funciona no win7 de 64 bits; (
Daniel Magnusson
Tenho certeza que eles já consertaram isso até agora. Minha principal reclamação contra o BareTail é que você não pode "filtrar" o log para ocultar (não apenas cores) as linhas irrelevantes.
Ed Ednnin
1
Você pode filtrar e pesquisar com o BareTailPro, mas não com a versão gratuita (BareTail).
argila
Eu tenho certeza que eles não fixo que até agora, uma vez que não foi atualizado desde 2006.
alldayremix
4
Funciona bem no Windows 7 Pro 64bit aqui.
Cb88
17

Faz alguns anos desde que você fez a pergunta, mas eu recomendaria o AstroGrep ( http://astrogrep.sourceforge.net ).

É gratuito, de código aberto e possui uma interface simples. Eu o uso para pesquisar código o tempo todo.

jj.
fonte
mas ele não pesquisa em pdf
JinSnow
16

O PowerShell foi mencionado algumas vezes. Aqui está como você realmente o usaria de uma maneira acinzentada:

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

Ele pesquisa recursivamente todos os arquivos de texto na árvore de diretórios atual SomeStringcom distinção entre maiúsculas e minúsculas.

Melhor ainda, execute o seguinte:

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

Então faça:

pgrep SomeStringToSearch *.txt

Em seguida, para torná-lo realmente mágico, adicione o alias da função ao seu perfil do PowerShell e você poderá reduzir o sofrimento de não ter as ferramentas de linha de comando adequadas.

jslatts
fonte
14

Cygwin inclui grep. Todas as ferramentas GNU e coisas Unix funcionam muito bem no Windows se você instalar o Cygwin.

http://www.cygwin.com/

Corey Goldberg
fonte
14

O ack funciona bem no Windows (se você tiver o Perl ). Acho melhor que grep para muitos usos.

Peter Mortensen
fonte
14

Git no Windows = grep no cmd.exe

Acabei de descobrir que a instalação do Git fornecerá alguns comandos básicos do Linux: cat, grep, scp e todos os outros bons.

Instale e adicione a pasta bin Git ao seu PATH e, em seguida, o cmd.exe possui a funcionalidade básica do Linux!

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

Daniel Magnusson
fonte
isso faz! perfeito agora eu tenho grep no sistema sem ferramentas de terceiros.
himanshuxd
10

O dnGREP é uma ferramenta grep de código aberto para Windows. Ele suporta vários recursos interessantes, incluindo:

  • Desfazer para substituir
  • Capacidade de pesquisar clicando com o botão direito na pasta no explorer
  • Opções avançadas de pesquisa, como pesquisa fonética e xpath
  • Pesquise dentro de arquivos PDF, arquivos e documentos do Word

IMHO, ele tem uma interface agradável e limpa também :)

stankovski
fonte
1
Eu tentei algumas das ferramentas grep sugeridas e, para mim, o dnGrep vence.
flobadob
É procurar em pdf, mas não epub
JinSnow
Edit: ele pode pesquisar epub. Você deve adicioná-lo desta forma: github.com/dnGrep/dnGrep/issues/200
JinSnow 13/11/2015
7

Eu sempre uso o WinGREP , mas tive problemas com o fato de não liberar arquivos.

Tom Kidd
fonte
2
Eu usei WinGrep por vários anos, é ótimo com a ressalva de que o diretório selecionar caixas são muito pequenos
Cruachan
A licença exige que você pague após uma avaliação de 30 dias.
chip
Ele possui um recurso interessante que muitas ferramentas grep não possuem, a capacidade de inverter correspondências. Útil para encontrar arquivos HTML sem algo, digamos.
Matthew Bloqueio
Notei um recurso muito irritante do WinGrep. Parece manter um bloqueio de arquivo em todas as correspondências efetuadas; portanto, se você tentar excluir um desses arquivos no Windows Explorer, não poderá até fechar o WinGrep.
Matthew Bloqueio
Se pudesse pesquisar nos resultados da pesquisa, estreitando ainda mais a lista, seria uma ferramenta ideal para mim.
Shamil
7

Bem, ao lado da porta Windows do GNU grep em:

http://gnuwin32.sourceforge.net/

há também o grep da Borland (muito semelhante ao GNU one) disponível no Freeware Borland Comp ++ do freeware (é um freeware com ferramentas de linha de comando).

Milan Babuškov
fonte
7

Eu tenho usado com sucesso os utilitários GNU para Win32 por algum tempo e ele possui um bom grep, bem como tail e outros utilitários gnu úteis para win32. Evito o shell empacotado e simplesmente uso os executáveis ​​no prompt de comando do win32.

O Tail que está empacotado também é uma aplicação bastante boa.

user17314
fonte
6

Eu sou o autor de Aba Search and Replace. Assim como o PowerGREP, ele suporta expressões regulares, salvando padrões para uso posterior, desfazer para substituições, visualizar com destaque de sintaxe para HTML / CSS / JS / PHP, diferentes codificações, incluindo UTF-8 e UTF-16.

Em comparação com o PowerGREP, a GUI é menos confusa. O Aba começa a pesquisar instantaneamente enquanto você digita o padrão (pesquisa incremental), para que você possa experimentar expressões regulares e ver imediatamente os resultados.

Você é convidado a experimentar minha ferramenta; Ficarei feliz em responder qualquer questão.

Peter Kankowski
fonte
4

Eu queria uma ferramenta gratuita de grep para Windows que permitisse clicar com o botão direito do mouse em uma pasta e fazer uma pesquisa regex de todos os arquivos - sem nenhuma tela nag.

A seguir, uma solução rápida com base no findstrmencionado em uma postagem anterior.

Crie um arquivo de texto em algum lugar do disco rígido, onde você mantém ferramentas de longa duração. Renomeie para .bat ou .cmd e cole o seguinte:

@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"

Em seguida, navegue até a pasta SendTo. No Windows 7, procure %APPDATA%\Microsoft\Windows\SendToe arraste um atalho do arquivo em lotes para a pasta SendTo.

Renomeei o atalho para 1 GREPmantê-lo no topo da lista SendTo.

O que eu gostaria de fazer a seguir é canalizar a saída findstratravés de algo que geraria um arquivo html, para que você pudesse clicar em cada linha de saída para abrir esse arquivo. Além disso, não acho que funcione com atalhos para pastas. Eu teria que inspecionar o parâmetro e ver se ele contém ".lnk".

Philip Beck
fonte
3

UnxUtils é o que eu uso, funciona perfeitamente para mim ...

Johan
fonte
3

Eu usei o grep da Borland por anos, mas apenas encontrei um padrão que não corresponde. Eeeks. O que mais ele não encontrou ao longo dos anos? Eu escrevi uma substituição simples de pesquisa de texto que faz recursão como grep - é o FS.EXE no forge de origem.

grep falha ...

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
fonte
3

Minha ferramenta de escolha é o apropriadamente chamado Windows Grep :

  • GUI simples e agradável
  • suporta pesquisa e substituição
  • pode mostrar as linhas ao redor das linhas encontradas
  • pode pesquisar dentro de colunas em arquivos CSVs e de largura fixa
John N
fonte
Infelizmente descontinuado, eu o uso há anos.
Alimack 19/08
@alimack Sim, notei isso pessoalmente recentemente. No entanto, a ferramenta ainda funciona (no Windows 7, pelo menos) e ainda pode ser baixada de empresas como a CNET. Uma pena, foi uma ferramenta bastante agradável.
John N
Procurando uma substituição, a interface promissora mas feia do PowerGREP ev muito cara. Tentei o grepWin, muito simples, o Filelocator não parece substituir o texto. Sugestões são bem-vindas - principalmente como ver resultados antes que eu me comprometa a substituir.
Alimack 22/08
2

A cadeia de seleção do PowerShell é semelhante, não é a mesma opção e semântica, mas ainda é poderosa.

Jim Deville
fonte
2

Se você deseja uma ferramenta simples de usar o Windows Grep, criei uma chamada P-Grep que disponibilizei para download gratuito no meu site: www.adjutantit.com - menu inicial, downloads.

O Windows Grep parecia ter problemas com um grande número de arquivos, então escrevi os meus - o que parece mais confiável. Você pode selecionar uma pasta, clicar com o botão direito e enviá-la para o P-Grep. A pasta sendto fica desatualizada durante a instalação.

John Pember
fonte
2

Outra boa opção é o MSYS . Ele fornece vários outros utilitários GNU para permitir que você seja mais produtivo.

DDay
fonte
1

Uso AJC Grep diariamente há anos. A única grande limitação que encontrei é que os caminhos dos arquivos são limitados a 255 caracteres e são interrompidos quando encontram um, em vez de apenas emitir um aviso. É chato, mas não acontece com muita frequência.

Eu o uso no Windows 7 Ultimate de 64 bits, para que suas credenciais de 64 bits sejam boas.

CrispinH
fonte
1

GREP para Windows

Eu o uso desde sempre e, felizmente, ainda está disponível. É super rápido e muito pequeno.

bbrown
fonte
Existe mesmo uma GUI? Eu apenas o uso na linha de comando para nunca perceber.
bbrown
Eu estava procurando uma maneira simples de mostrar as linhas antes e depois da partida e esta foi a que fez. Por exemplo: execute 'netstat -anb | grep -B1 22' para saber quais programas ouvir na porta 22.
Jan Ehrhardt
0

Se nenhuma das soluções é exatamente o que você está procurando, talvez você possa escrever um wrapper no FindStr que faça exatamente o que você precisa?

O FindStr é muito bom de qualquer maneira, portanto, ele deve apenas ativar uma GUI (se você quiser) e fornecer alguns recursos extras (como combiná-lo com o Find para encontrar a contagem de arquivos que contêm uma string especificada [mencionada acima]).

Obviamente, isso pressupõe que você tenha a exigência, o tempo e a inclinação para fazer isso!

Stefan
fonte
0

Eu tenho o Cygwin instalado na minha máquina e coloquei o diretório bin do Cygwin no meu caminho ambiental, para que o greg do Cygwin funcione normalmente em uma linha de comando que resolva todas as minhas necessidades de script para grep no momento.

Peter Mortensen
fonte