Argumento de múltiplas strings do comando findstr DOS

Argumento de múltiplas strings do comando findstr DOS
findstr /v "black"  File1.txt

O comando DOS acima exibirá o conteúdo de 'Arquivo1.txt' que não corresponde à string "preto".

Como modificar este comando, se eu precisar filtrar as palavras “preto” e “branco”?

Responder1

Como filtrar as palavras “preto” e “branco”?

O comando a seguir exibirá todas as linhas contendo"black" NEM "white":

findstr /v "black white" blackwhite.txt

O comando a seguir exibirá todas as linhas contendo"black" OU "white":

findstr "black white" blackwhite.txt

O comando a seguir exibirá todas as linhas contendoEXATAMENTE "black white":

findstr /c:"black white" blackwhite.txt

O comando a seguir exibirá todas as linhas contendo"black" E "white":

findstr "white" blackwhite.txt | findstr "black"

Notas:

  • Quando a string de pesquisa contém várias palavras, separadas por espaços, findstrretornará linhas que contêm qualquer uma das palavras (OR).

  • Uma busca literal ( /C:string) reverterá esse comportamento e permitirá a busca por uma frase ou sentença. Uma pesquisa literal também permite pesquisar caracteres de pontuação.

Arquivo de dados de exemplo (blackwhite.txt):

red
black
white
blue
black white
black and white

Exemplo de saída:

F:\test>findstr /v "black white" blackwhite.txt

red
blue

F:\test>findstr "black white" blackwhite.txt
black
white
black white
black and white

F:\test>findstr /c:"black white" blackwhite.txt
black white

F:\test>findstr "white" blackwhite.txt | findstr "black"
black white
black and white

Leitura adicional

Responder2

Se você precisar exibir todas as linhas com as palavras "preto" ou "branco", livre-se do /v em seu comando.

Tente: findstr white File1.txt ou findstr black File1.txt ou findstr "black white" File1.txt

O operando /V imprimirá todas as linhas que NÃO contêm sua string de pesquisa.

Digite findstr /? para obter mais informações sobre como usar findstr.

Responder3

Queria acrescentar isso para mencionar como usar findstr com stdout no Windows para pesquisas múltiplas.

Veja como listar apenas nomes de interfaces de rede e seus endereços IP:

ipconfig /all | findstr /i /L /c:"Ethernet" /c:"IPv4"

A documentação da Microsoftdetalha cada parâmetro

  • /iIgnora a capitalização dos caracteres ao pesquisar a string.
  • /lProcessa strings de pesquisa literalmente.
  • /c:<string> Usa o texto especificado como uma sequência de pesquisa literal.

Responder4

Aqui está outro exemplo usando um método de saída diferente, não apenas uma pesquisa direta de arquivos. Por exemplo, verifique o status da porta de rede onde port = 98765e status = ESTABLISHED or LISTENING.

Por exemplo, isso executa um netstat a cada cinco segundos, depois canaliza a saída do netstat para um FIND (também pode usar FINDSTR) e, em seguida, canaliza esses resultados para findstr para filtrar quando a porta está em um determinado estado (neste caso ESTABLISHED or LISTENING).

netstat -an 5 | find "98765" | findstr "ESTABLISHED LISTENING"

TCP    192.168.123.456:57349     10.10.12.34:98765 ESTABLISHED

informação relacionada