Existe um utilitário semelhante ao grep
disponível no prompt de comando do Windows ou existe uma ferramenta de terceiros?
Existe um utilitário semelhante ao grep
disponível no prompt de comando do Windows ou existe uma ferramenta de terceiros?
Respostas:
Existe uma ferramenta de linha de comando chamada FINDSTR
que vem com todos os sistemas operacionais da classe Windows NT (digite FINDSTR /?
em uma janela do prompt de comando para obter mais informações) Ele não suporta tudo o que grep
faz, mas pode ser suficiente para suas necessidades.
netstat -n | FINDSTR 3389
PowerShell (incluído como padrão no Windows 7 / 2008R2, opcional para XP / 2003 / Vista / 2008), que inclui o select-string
cmdlet para esse fim.
Grep for Windows por GnuWin Project (02/10/2014: Está desatualizado, veja os comentários abaixo)
como mencionado, o findstr funciona bem. exemplo:
C:> dir | findstr Windows
11/06/2013 21:55 Windows
Cygwin grep e mais;)
Eu também encontrei mais uma maneira de utilizar a funcionalidade do GREP no Windows 7 e superior sem nenhum aplicativo extra para instalar e em sistemas mais antigos você pode usar o Powershell de instalação.
No Powershell , o usuário pode usar o Where-Object que possui um conjunto bastante abrangente de recursos que fornece toda a funcionalidade do GREP e mais.
Espero que ajude.
Estou surpreso que ninguém tenha mencionado o FINDSTR . Eu não sou um usuário grep poweruser, mas o findstr faz o que eu preciso, filtra arquivos e stdin, com algum suporte a regex primitivo. É fornecido com o Windows e tudo mais. (Edit: Bem, alguém mencionou findstr, é tarde, eu acho)
GnuWin32Vale a pena mencionar o , ele fornece a versão Win32 nativa de todas as ferramentas padrão do Linux, incluindo grep, file, sed, groff, indent, etc.
E é atualizado constantemente quando novas versões dessas ferramentas são lançadas.
No Windows, uso o Far Manager para pesquisar arquivos. O BSD licenciado, funciona no console, economiza tempo ao digitar os parâmetros cmdline. Aqui está o diálogo de pesquisa invocado pelo Alt-F7.
Atualização: isso não era verdade quando a pergunta foi feita originalmente, mas agora a Microsoft permite instalar o Windows Subsystem for Linux , e o Windows executará o grep. No PowerShell, execute:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
O UnxUtils é um ótimo conjunto de utilitários Unix que são executados no Windows. Possui grep, sed, gawk, etc.
Um utilitário de pesquisa de arquivos excelente e muito rápido, o Agent Ransack , suporta a pesquisa de expressões regulares. É principalmente um utilitário da GUI, mas também está disponível uma interface de linha de comando.
Embora não seja tecnicamente grep nem linha de comando, o Microsoft Visual Studio e o Notepad ++ possuem um recurso Find in Files muito bom, com suporte completo a expressões regulares. Encontro-me usando-os com freqüência, embora também tenha a versão CygWin do grep disponível na linha de comando.
Vou adicionar meus US $ 0,02 a esta discussão. O dnGREP é uma excelente ferramenta grep de código aberto para Windows que suporta desfazer, integração com o Windows Explorer, pesquisa em PDFs, zips, DOCs e muitas outras coisas ...
Sim, existe apenas um programa para Windows PC que possui uma interface gráfica sólida e é um utilitário essencial para mim. Eu trabalho como desenvolvedor e, em todos os computadores que tenho, instale o programa XFind. Foi criado em 1997 e até agora a versão é 1.0 e até agora funciona e é a melhor. Freqüentemente eu preciso pesquisar alguma string em um " .cs", " .aspx", " .sct" (arquivo de código de formulário do Visual FoxPro) ou apenas " . *" E o XFind verifica todos os arquivos, mostra-me e outra grande coisa é que você pode procurar onde a string está no arquivo O XFind também possui algum tipo de editor. Se for um arquivo binário, ele mostrará a string encontrada. Experimente e use-o para sempre, se você é um desenvolvedor como eu.
Obviamente, você recebeu muitas recomendações diferentes.
Minha escolha pessoal para um utilitário gratuito e de terceiros é: Agent Ransack
Download do Agent Ransack
Apesar do nome um tanto confuso, ele funciona bem e pode ser usado de várias maneiras para encontrar arquivos.
Boa sorte
o busybox all-in-one contém grep / egrep / sed / awk e MUITO mais
obtê-lo de:
Atualização: não está mais disponível - ou alguns
O Bare Grep é bom se você quiser uma GUI. Gnu grep é bom para CLI
Se você não se importa com um produto pago, o PowerGREP é o meu favorito.
Recentemente, usamos o PowerGREP para algumas operações em massa bastante avançadas em milhares de arquivos. Incluindo pesquisa regex no conteúdo de arquivos PDF e alteração de documentos PDF em larga escala.
Vale o dinheiro se você quiser economizar tempo com mão de obra manuel. Você pode experimentá-lo antes de comprar, eu acho.
Já faz um tempo desde que eu os usei, mas o Borland (Embarcadero agora) incluiu uma linha de comando grep com seu compilador C / C ++. Por algum tempo, eles disponibilizaram sua versão 5.5 como um download gratuito após o registro.
Existe um utilitário comercial grep disponível na Oak Road Systems .
Eu recomendo o PowerGrep
Eu tive que fazer um projeto de descoberta eletrônica há vários anos. Eu descobri que fisdstr
tinha algumas limitações, principalmente o fisdstr acabaria falhando
o script teve que pesquisar milhares de arquivos usando algumas dúzias de termos / frases de pesquisa.
O grep de Cygwin funcionou muito melhor , não engasgou com frequência, mas no final fui ao PowerGrep porque a interface gráfica tornava muito mais fácil saber quando e onde ele travava, e também era muito fácil editar todos os condicionais e resultados que Eu queria. Por fim, o PowerGrep foi o mais confiável dos três.
Eu sei que é um tópico um pouco antigo, mas aqui está outra coisa que você pode fazer. Eu trabalho em uma VM de desenvolvedor sem acesso à Internet e espaço em disco livre bastante limitado, então usei o java instalado nela.
Compile um pequeno programa java que imprime correspondências de regex no console. Coloque o jar em algum lugar do seu sistema, crie um lote para executá-lo e adicione a pasta à sua variável PATH:
JGrep.java:
package com.jgrep;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JGrep {
public static void main(String[] args) throws FileNotFoundException, IOException {
int printGroup = -1;
if (args.length < 2) {
System.out.println("Invalid arguments. Usage:");
System.out.println("jgrep [...-MODIFIERS] [PATTERN] [FILENAME]");
System.out.println("Available modifiers:");
System.out.println(" -printGroup - will print the given group only instead of the whole match. Eg: -printGroup=1");
System.out.println("Current arguments:");
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
return;
}
Pattern pattern = null;
String filename = args[args.length - 1];
String patternArg = args[args.length - 2];
pattern = Pattern.compile(patternArg);
int argCount = 2;
while (args.length - argCount - 1 >= 0) {
String arg = args[args.length - argCount - 1];
argCount++;
if (arg.startsWith("-printGroup=")) {
printGroup = Integer.parseInt(arg.substring("-printGroup=".length()));
}
}
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
}
Matcher matcher = pattern.matcher(sb.toString());
int matchesCount = 0;
while (matcher.find()) {
if (printGroup > 0) {
System.out.println(matcher.group(printGroup));
} else {
System.out.println(matcher.group());
}
matchesCount++;
}
System.out.println("----------------------------------------");
System.out.println("File: " + filename);
System.out.println("Pattern: " + pattern.pattern());
System.out.println("PrintGroup: " + printGroup);
System.out.println("Matches: " + matchesCount);
}
}
c: \ jgrep \ jgrep.bat (junto com jgrep.jar):
@echo off
java -cp c:\jgrep\jgrep.jar com.jgrep.JGrep %*
e adicione c: \ jgrep no final da variável de ambiente PATH.
Agora basta ligar jgrep "expression" file.txt
de qualquer lugar.
Eu precisava imprimir alguns grupos específicos da minha expressão, então adicionei um modificador e chamei assim jgrep -printGroup=1 "expression" file.txt
.
Sei que é uma pergunta antiga, mas me deparei com este post procurando uma resposta. E eu encontrei um para adicioná-lo aqui para a memória coletiva da Internet
Powershell: Módulo de cadeia de seleção: Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
e uma postagem de blog informativa com exemplos avançados: "Como" grep "no PowerShell" https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
Um exemplo simples dessa postagem no blog: cat package.json | Webpack Select-String -Pattern ls ./src/components/ | Visualização Select-String -Pattern
C:> cat post.md | Padrão de cadeia de caracteres de seleção "^ \ w *:"
Use Cygwin ...
possui versões de 32 e 64 bits
e funciona bem do Windows 2000 (*)
ao Windows 10 ou Server 2019
Eu uso o Cygwin por um longo tempo ...
e recentemente tentei substituir o Windows-Linux-Subsystems ...
não por muito tempo ...
voltei rapidamente para Cygwin novamente ...
muito mais flexível, controlável e rico ...
também menos invasivo ...
basta adicionar \ bin ao caminho ...
e você pode usá-lo em qualquer Windows / Batch / Powershell ...
ou em uma DOS-Box ... ou em uma Powershell-Box ...
Além disso, você pode instalar uma tonelada de ótimos pacotes
que realmente funcionam ... como nginX ou PHP ... Eu até uso o pacote PHP Cygwin no meu IIS ...
Como bônus, você também pode usá-lo a partir de um shell bash ...
(Eu acho que essa era a intenção original ;-))