Thực hiện logic so sánh HOẶC với findstr.exe


10

Đây có thể là một câu hỏi ngu ngốc nhưng ngay cả sau khi đọc tài liệu tôi vẫn không chắc chắn làm thế nào để tìm thấy tất cả các dòng trong một tệp có chứa ".cpp" hoặc ".h".

Có cách nào làm được việc này không?

Ví dụ (không hoạt động):

findstr /i .cpp,.h // , == OR

Câu trả lời:


8

Cho nó một shot, nên làm việc cho bạn.

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

Gói cả trong dấu ngoặc kép và riêng biệt với một không gian. Lưu ý, bạn cũng phải thoát. trong cả hai.


4

Nếu bạn cần bao gồm các cụm từ (Các từ được phân tách bằng dấu cách), bạn có thể thực hiện:

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

Hoặc nếu bạn nhận được một số hàng không mong muốn, bạn cũng có thể loại trừ chúng bằng /vtham số:

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

(Đã thử nghiệm điều này trên Windows 7 và Windows 10)


Lưu ý, Để xử lý hiệu quả Bộ dữ liệu lớn, bạn nên tránh lệnh FindStr thứ hai khi có thể hoặc để giảm các dòng được cung cấp cho nó khi không. Điều này có thể xảy ra khi các thuật ngữ được loại trừ trùng lặp theo một cách nào đó với các thuật ngữ được bao gồm bằng cách sử dụng các So sánh Regex đơn giản được cung cấp bởi lệnh FindStr. Trong ví dụ được đưa ra phù hợp với "Trình điều khiển" nhưng loại trừ "Trình điều khiển" có khả năng nhanh hơn trên các bộ dữ liệu lớn bằng cách giảm các dòng được chuyển đến FindStr thứ hai để đánh giá. tức làFindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"
Ben Personick

Ngoài ra, nếu bạn biết số liệu cụ thể của bạn cũng đủ bạn có thể đã biết rằng hầu hết các thuật ngữ mà bạn muốn loại trừ tài khoản cho phần lớn các dữ liệu của bạn, sau đó nó có thể có lợi cho đặt những điều khoản loại trừ đầu tiên tứcFindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
Bến Personick

0

Cách bạn hình thành ORlogic tùy thuộc vào những gì bạn đang tìm kiếm và những thay đổi dự đoán trong tương lai của bạn, nếu có.

Nếu đó là danh sách các truy vấn không có khoảng trắng trong đó, bạn có thể thực hiện như thế này, nhanh & bẩn:

findstr "thing1 thing2 thing3 thing4 thing5" và nếu có bất kỳ thứ gì trong số đó, nó sẽ đánh giá là đúng và thoát 0.

Nếu những gì bạn đang tìm kiếm có khoảng trắng, bạn phải sử dụng findstrcác chuỗi tìm kiếm theo nghĩa đen với /c:""loại tham số. Bạn vẫn có thể sử dụng loại tham số này nếu không có khoảng trắng.

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

Tuy nhiên , bạn không thể kết hợp nghĩa đen với nhanh & bẩn . Ví dụ, điều này sẽ không hoạt động:

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

Bạn cần chuyển đổi các tham số trước đó thành tham số bằng chữ, như vậy:

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

Do đó, đây là cách tốt hơn để sử dụng tùy chọn theo nghĩa đen bởi vì nó sẽ mở rộng tốt hơn với các tập lệnh động. Tuy nhiên, nếu đó chỉ là một tập hợp truy vấn tĩnh không có khoảng trắng, thì cách nhanh & bẩn sẽ đủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.