Findstr.exe ile mantıksal VEYA karşılaştırmaları yapma


Yanıtlar:


9

Bunu denemek, senin için çalışmalı.

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

Her ikisini de tırnak içine alın ve boşlukla ayırın. Ayrıca, kaçmak zorunda. ikisinde de.


4

İfadeleri (Alanla ayrılmış kelimeler) eklemeniz gerekiyorsa bunu yapabilirsiniz:

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

Veya bazı istenmeyen satırlar alıyorsanız, şu /vparametreyi kullanarak da hariç tutabilirsiniz :

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

(Bunu Windows 7 ve Windows 10'da test etti)


Not, Büyük Veri Kümelerini verimli bir şekilde işlemek için, Mümkün olduğunda ikinci FindStr komutundan kaçınmak ya da olmadığında beslenen satırları azaltmak tercih edilebilir. Bu, dışarıda bırakılacak terimlerin, FindStr komutu tarafından sunulan basitleştirilmiş Regex Karşılaştırmaları kullanılarak dahil edilecek terimlerle bir şekilde çakıştığı durumlarda mümkündür. Verilen örnekte eşleşen "Sürücü" ancak "DriverS" hariç değerlendirmek için ikinci FindStr geçirilen satırları azaltarak büyük veri kümelerinde daha hızlı olma potansiyeline sahiptir. ieFindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"
Ben Personick

Ayrıca, belirli veri kümenizi yeterince iyi biliyorsanız, zaten tanımlamak istediğiniz terimlerin çoğunun veri FindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
kümenizin çoğunu hesaba kattığını

0

ORMantığı nasıl oluşturduğunuz, aradığınız şeye ve varsa beklenen değişikliklerinize bağlıdır.

İçinde boşluk olmayan sorguların bir listesi varsa, bunu şu şekilde yapabilirsiniz, hızlı ve kirli:

findstr "thing1 thing2 thing3 thing4 thing5" ve eğer bunlardan herhangi biri mevcutsa, doğru olarak değerlendirilecek ve 0'dan çıkacaktır.

Aradığınız şeyin boşlukları varsa , parametre türüyle findstrbirlikte kelimenin tam anlamıyla arama dizelerini kullanmanız gerekir /c:"". Boşluk yoksa bu tür bir parametreyi kullanmaya devam edebilirsiniz.

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

Ancak , hazır bilgi ile hızlı ve kirli birleştiremezsiniz . Örneğin, bu işe yaramaz:

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

Daha önceki parametreleri değişmez parametrelere dönüştürmeniz gerekir, şöyle:

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

Bu nedenle, değişmez seçeneği kullanmak daha iyi bir uygulamadır çünkü dinamik komut dosyalarıyla daha iyi ölçeklenir. Ancak, boşluk olmayan statik bir sorgu kümesiyse, hızlı ve kirli yol yeterli olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.