Fazendo comparações lógicas OR com findstr.exe

10

Esta pode ser uma pergunta estúpida, mas mesmo depois de ler a documentação , ainda não estou Certifique-se de como localizar todas as linhas em um arquivo que contenha ".cpp" ou ".h".

Existe uma maneira de fazer isso?

Por exemplo (não funciona):

findstr /i .cpp,.h // , == OR
    
por Andreas Bonini 17.03.2010 / 18:21

3 respostas

8

Dê uma chance, trabalhe para você.

findstr /i "\.cpp \.h" myfile.txt

Envolva os dois entre aspas e separe-os com um espaço. Note, você também tem que escapar do. em ambos.

    
por 17.03.2010 / 18:40
4

Se você precisar incluir frases (palavras separadas por espaço), poderá fazê-lo:

findstr /i /c:"IBSS" /c:"WDI Version" /c:"Soft Ap"

Ou, se você estiver recebendo algumas linhas indesejadas, poderá excluí-las usando o parâmetro /v também:

findstr /i /c:Hosted /c:Version /c:Driver | findstr /v /i /c:drivers /c:native

(testado no Windows 7 e no Windows 10)

    
por 16.08.2016 / 17:24
0

Como você forma a lógica OR depende do que você está procurando e de suas futuras alterações previstas, se aplicável.

Se for uma lista de consultas que não têm espaços em branco, você pode simplesmente fazer assim, rápido & sujo:

findstr "thing1 thing2 thing3 thing4 thing5" e se qualquer uma dessas coisas estiver presente, ele será avaliado como verdadeiro e sairá como 0.

Se o que você está procurando tiver espaço em branco, será necessário usar as sequências de pesquisa literais de findstr com o tipo de parâmetro /c:"" . Você ainda pode usar esse tipo de parâmetro se não houver espaços em branco.

/C:string Uses specified string as a literal search string.

No entanto, , você não pode combinar literal com quick & sujo . Por exemplo, isso não funcionará:

findstr "thing1 thing2" /c:"thing3 thingy"

Você precisaria converter os parâmetros anteriores em parâmetros literais, assim:

findstr /c:"thing1" /c:"thing2" /c:"thing3 thingy"

Por causa disso, é uma prática melhor usar a opção literal porque ela será dimensionada melhor com scripts dinâmicos. No entanto, se for apenas um conjunto estático de consultas que não possuem espaços em branco, o & caminho sujo deve ser suficiente.

    
por 30.11.2018 / 03:54