Esecuzione di confronti logici OR con findstr.exe


Risposte:


9

Dai una possibilità, dovrebbe funzionare per te.

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

Avvolgi entrambe le virgolette e separale con uno spazio. Nota, devi anche sfuggire a. in entrambi.


4

Se devi includere frasi (parole separate da spazi) puoi farlo:

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

Oppure, se stai ottenendo alcune righe indesiderate, puoi escluderle anche usando il /vparametro:

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

(Testato su Windows 7 e Windows 10)


Nota: per elaborare in modo efficiente set di dati di grandi dimensioni, è preferibile evitare il secondo comando FindStr quando possibile o ridurre le linee che vengono alimentate quando non lo sono. Ciò è possibile laddove i termini da escludere si sovrappongano in qualche modo ai termini da includere utilizzando i confronti Regex semplificati offerti dal comando FindStr. Nell'esempio dato la corrispondenza di "Driver" ma escludere "DriverS" ha il potenziale per essere più veloce su set di dati di grandi dimensioni riducendo le righe passate al secondo FindStr da valutare. cioèFindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"
Ben Personick,

Inoltre, se conosci abbastanza bene il tuo set di dati specifico, potresti già sapere che la maggior parte dei termini che desideri escludere account per la maggior parte del tuo set di dati, può essere utile inserire prima le dichiarazioni di esclusione, ad es.FindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
Ben Personick,

0

Il modo in cui formi la ORlogica dipende da ciò che stai cercando e dai tuoi futuri cambiamenti previsti, se applicabile.

Se è un elenco di query che non contengono spazi bianchi, puoi farlo in questo modo, veloce e sporco:

findstr "thing1 thing2 thing3 thing4 thing5" e se una di queste cose è presente, verrà valutata su true e uscirà da 0.

Se quello che stai cercando ha spazi bianchi, devi usare findstrle stringhe di ricerca letterali con il /c:""tipo di parametro. Puoi comunque usare questo tipo di parametro se non ci sono spazi bianchi.

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

Tuttavia , non è possibile combinare letterale con rapido e sporco . Ad esempio, questo non funzionerà:

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

Dovresti convertire i parametri precedenti in parametri letterali, in questo modo:

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

Per questo motivo, è consigliabile utilizzare l'opzione letterale perché si ridimensionerà meglio con script dinamici. Tuttavia, se si tratta solo di una serie statica di query che non hanno spazi bianchi, il metodo rapido e sporco dovrebbe essere sufficiente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.