Questão Grep equivalente para o Windows 7?


Existe um prompt de comando grep equivalente para o Windows 7? Ou seja, eu quero filtrar os resultados de um comando:

Uso de Bash:

ls | grep root

O que seria de um prompt de comando do Windows?


210


origem


não confunda ms-dos com o prompt de comando. + uso de find e findstr e até mesmo grep, para windows .. é facilmente encontrado com uma busca rápida. existem até tabelas de comandos equivalentes no linux e no windows. também você bash exemplo não é ainda específico para bash .. só suponho, * nix OS. - barlop


Respostas:


Findstr soa como o que você quer. Eu o uso o tempo todo como um equivalente grep aproximado na plataforma Windows.

Outro exemplo com canos:

C:\> dir /B | findstr /R /C:"[mp]"

253



Sim, isso parece ser o que estou procurando. Eu entendo que provavelmente existem limitações. Vou dar uma chance. - chrisjlee
por que eles não poderiam simplesmente chamá-lo de grep! - Victor Grazi
@VictorGrazi Eles realmente fizeram no começo, ver Este artigo. Foi originalmente chamado qgrep - mas depois foi renomeado. - Zitrax
O grande problema com findstr é que o padrão regex pode não conter alternativas. - Wolf
A questão é sobre o Windows 7, mas quais outras versões do Windows findstr por padrão? Desde o Windows XP? - Peter Mortensen


Existem várias possibilidades:

  • Use uma porta de um Unix grep comando. Existem várias opções. Muitas vezes são mencionados GNUWin32, cygwine unxutils. Menos bem conhecido, mas de certa forma melhor, são as ferramentas no Kit de ferramentas do utilitário SFUA, que correm no Subsistema para Aplicativos Baseados em UNIX que vem aí na caixa com o Windows 7 Ultimate edition e o Windows Server 2008 R2. (Para o Windows XP, pode-se baixar e instalar Serviços para UNIX versão 3.5.) Este kit de ferramentas possui um grande número de ferramentas de linha de comando, desde mv e du, através das cascas Korn e C, para perl e awk. Ele vem em ambos os sabores x86-64 e IA64, bem como x86-32. Os programas são executados no ambiente POSIX nativo do Windows, em vez de com DLLs do emulador (como cygwin1.dllcamadas sobre o Win32. E sim, o kit de ferramentas grep, bem como cerca de 300 outros.
  • Use um dos muitos Win32 nativos grep comandos que as pessoas escreveram e publicaram.  Tim Charron uma versão nativa do Win32 de um GNU grep modificado, por exemplo. Há também PowerGREP, Nua grep, grepWin, AstroGrepe dnGrep, embora estes sejam todos programas GUI não programas TUI.
  • Use o fornecido find e findstr.  A sintaxe é diferente da de grep, note, como é a capacidade de expressão regular.

40



O cygwin funcionou muito bem no Win 7. Eu precisava do grep e o GnuWin32 grep não funcionava para mim. - Kozuch
Você escreve eu não vejo perl em SUA C: \ Windows \ SUA> dir perl * / s / b Arquivo não encontrado e funcionando, e. c shell de SUA eu não vejo em / bin - barlop
você também escreve que o SFUA é, de certa forma, melhor. De que maneiras? - barlop
@Kozuch, a menos que você diga como isso não funcionou, então seu comentário não é útil - barlop


E se PowerShell comandos são permitidos, use

PS C:\> Get-ChildItem | Select-String root

ou curto

PS C:\> ls | sls root

Esteja ciente de que o alias sls é definido apenas começando com a versão 3.0 do PowerShell. Você pode adicionar um alias para menos digitação:

PS C:\> New-Alias sls Select-String

Para executar o comando do PowerShell diretamente do cmd, use

C:\>powershell -command "ls | select-string root"

17



Grep, o caminho do Powershell. communary.net/2014/11/10/grep-the-powershell-way - Charles Burge


Na sua revisão inicial você escreveu MS-DOS, só existe FIND, até onde sei. Mas é um antigo sistema operacional não usado mais.

No prompt de comando do Windows NT (por exemplo, Win2K e win XP e posterior, por exemplo, win7, win10), você pode usar find e findstr e se você baixar GnuWin32 então grep 

As diferenças básicas são que findstr tem algum expressões regulares Apoio, suporte. Grep suporta expressões regulares melhor.

C:\>dir | find "abc"
C:\>dir | find /i "abc"

find /? e findstr /?mostra o que os switches fazem.

Gnuwin32 tem "pacotes". Se você baixar o GnuWin32, eu sugiro o pacote coreutils para um monte de utilitários básicos que você já conhece, mas o grep não é aquele que é o seu próprio pacote.

Adicionado

O grep do GnuWin32, da última vez que verifiquei, é antigo. O grep do Cygwin está muito mais atualizado. Também tenha em mente que muitas pessoas usam Máquinas Virtuais em vez de portas Windows de comandos * nix.


14





Se você preferir usar grep, ao invés de findstrexiste um único .exe versão do arquivo em UnxUtils, portanto é portátil e não há necessidade de instalá-lo ou usar algo como o Cygwin.


9



Isso é interessante, mas exigiria a instalação dessa ferramenta. - chrisjlee
@ Chris: Não há instalação. É apenas um .zip arquivo de .exe arquivos. A única desvantagem é que as versões são um pouco antigas. - paradroid
Qual a desvantagem de ser velho? O software pode ser antigo? Todos os novos bytes. - user unknown
O GnuWin32 também fornece grep para Windows: gnuwin32.sourceforge.net/packages/grep.htm - LiuYan 刘研
@userunknown bem, por exemplo, o comando unxutils sed é mais antigo e não suporta \ d por ex. \ d22 para especificar aspas. Um wget mais antigo pode não fazer o download de uma página que um mais novo, e se você pedir por suporte, eles podem pedir que você obtenha o mais recente, pois isso pode resolver alguns problemas. Um grep realmente antigo, sem dúvida, não terá o nível de suporte de regex que um atual tem - barlop


Você pode tentar instalar Chocolatey no Windows e, através disso, instalar o Gow ferramenta. Isso fornecerá a você grep no Windows.

Gow representam o GNU no Windows. Ele fornece utilitários de linha de comando Unix no Windows.


3



É um gerenciador de pacotes, como um apt-get, mas para windows. Tem o seu nome, porque o desenvolvedor baseou-se no NuGet que é um gerenciador de pacotes para o visual studio, e isso soa como nugget (como no nugget de frango), então ele achou que ele seria "engraçado" ou "inteligente" seu programa Chocolatey NuGet. Eu ouvi isso em um podcast que o entrevistou. Gow pode ser baixado independentemente também - barlop
Eu sou novo no Gow, depois de alguns dias de uso eu posso testemunhar que eu gosto muito dele - é melhor do que todos os ports mais antigos dos utilitários UNIX que eu usei antes. - Radim Cernej
@RadimCernej seu comentário não é útil a menos que você indique como Você acha que é melhor. - barlop
@barlop: Desde que escrevi o meu comentário de janeiro de 2016, mudei gradualmente para o Gow. Até agora, não há bugs, ele tem todos os utilitários que eu preciso / use, caminho são produzidos em formato Microsoft (facilitando copiar / colar para outros programas). O Gow não é invasivo o suficiente (fácil de instalar e remover) que eu recomendo fortemente que você teste-o. - Radim Cernej


Uso de bash

$ ls | grep root

Uso de Cmd

> dir /b | findstr root

Onde /b apoia bsão lista de diretórios e arquivos


2



Isso duplica outra resposta e não adiciona conteúdo novo. Por favor, não poste uma resposta a menos que você tenha algo novo para contribuir. - DavidPostill♦
@DavidPostill: Esta é uma solução rápida para usuários "TL; DR" (como eu) - vladkras
Isso não é desculpa para adicionar uma resposta que não contribua com nada de novo. Em qualquer caso, a resposta aceita aparecerá sempre primeiro, para que seja lida antes da sua. - DavidPostill♦
@DavidPostill, não se importe, mas a resposta aceita contém múltiplos excessivos e inexplicável chaves /B, /R e /C OP não perguntou sobre, enquanto minha resposta dá exato equivalente - vladkras
o /b é fazer o dir saída o mesmo que o ls saída. Se você testar, verá a diferença. Portanto, não é o equivalente exato. - DavidPostill♦