Comando #Windows equivalente ao grep (#Unix). (#Cmd #PowerShell #linux #findstr #dev #grep)

Seguindo a mesma temática do último post, mostro aqui os comandos Windows que são equivalentes ao grep do Unix. O grep é muito utilizado para processar streams de texto e extrair informações dele. Aqui mostro um comando para o prompt (cmd) e outro para o Powershell.

Para os exemplos deste post, vou extrair informações do resultado do comando netstat.

O comando será: netstat -na

Que exibe:

  •  Endereços e portas com formato numérico. (-n)
  • Todas as conexões e portas abertas. (-a)

 

Prompt (cmd) e Powershell

– Filtrar o resultado por linhas que contenham a porta 5000:

netstat -na | findstr 5000

 

– Filtrar o resultado por linhas que mostrem o estado “ESTABLISHED

netstat -na | findstr ESTABLISHED

 

– Filtrando o resultado por linhas que contenham o texto “tcp”, fazendo uma busca case insensitive

netstat -na | findstr -i tcp

 

– Filtrando o resultado, buscando por linhas que mostrem uma conexão TCP, onde o IP começa com 192, termina com 193 e está com estado TIME_WAIT. Esta busca é bem complexa, então vou utilizar regex:

netstat -na | findstr /i "TCP.*192\..*\..*\.193.*TIME_WAIT"

O expressão regular utilizada é meio estranha e não está muito dentro do padrão. O findstr não é totalmente aderente ao regex mais padronizado que conhecemos.

Algumas dicas para utiliza-lo:

  • .  (ponto): Wildcard. Representa qualquer caractere
  • * (asterisco): Repetição. Zero ou mais ocorrências do caractere anterior.
  • ^: Inicio da linha
  • $: Final da linha
  • [bacon]: qualquer letra que esteja nesta sequencia
  • [^bacon]: qualquer letra que não esteja nesta sequencia
  • [a-x] qualquer letra no range entre a e x.
  • \x: caractere com escape. representa (literalmente) x.
  • \<ba: inicio da palavra
  • con\>: final da palavra

 

PowerShell

O comando para realizar esta operação no Powershell é o Select-String e funciona da mesma forma que o findstr.

– Filtrar o resultado por linhas que contenham a porta 5000:

netstat -na | Select-string 5000

 

– Filtrar o resultado por linhas que mostrem o estado “ESTABLISHED

netstat -na | Select-String ESTABLISHED

 

– Filtrando o resultado por linhas que contenham o texto “tcp”, fazendo uma busca case insensitive

netstat -na | Select-String tcp

 

– Filtrando o resultado, buscando por linhas que mostrem uma conexão TCP, onde o IP começa com 192, termina com 193 e está com estado TIME_WAIT. Esta busca é bem complexa, então vou utilizar regex:

netstat -na | Select-String "TCP.*192\..*\..*\.193.*TIME_WAIT"

 

 

Espero ter ajudado.

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Conhecimento Técnico and tagged , , , , , .