findstr.exe와 논리적 OR 비교


11

이것은 어리석은 질문 일 수 있지만 설명서를 읽은 후에도 ".cpp" 또는 ".h" 가 포함 된 파일에서 모든 줄을 찾는 방법을 여전히 잘 모르겠습니다 .

그렇게 할 방법이 있습니까?

예를 들어 (작동하지 않음) :

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

답변:


9

이 기회를 주면 효과가 있습니다.

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

따옴표로 묶고 공백으로 분리하십시오. 또한 이스케이프해야합니다. 둘 다.


4

구 (공백으로 구분 된 단어)를 포함해야하는 경우 다음을 수행 할 수 있습니다.

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

또는 원하지 않는 행을 얻는 경우 /v매개 변수를 사용하여 제외 할 수도 있습니다.

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

(Windows 7 및 Windows 10에서 이것을 테스트했습니다)


대용량 데이터 세트를 효율적으로 처리하려면 가능한 경우 두 번째 FindStr 명령을 피하거나 공급되지 않는 라인에 줄을 줄이는 것이 좋습니다. FindStr 명령이 제공하는 단순화 된 정규식 비교를 사용하여 제외 할 용어가 포함되는 용어와 겹치는 경우에 가능합니다. "Driver"와 일치하지만 "DriverS"를 제외하고 주어진 예에서는 평가를 위해 두 번째 FindStr에 전달 된 행을 줄임으로써 큰 ​​데이터 세트에서 더 빠를 수 있습니다. 즉FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"
벤 Personick

당신은 충분히 특정 데이터 집합을 알고있는 경우 또한, 당신은 이미 당신이 당신의 데이터 세트의 대부분 계정을 제외하고자하는 용어의 대부분, 먼저 즉 배제 문을 배치 할 도움이 될 수 있다는 것을 알고 있습니다FindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
벤 Personick

0

OR논리 를 구성하는 방법 은 찾고자하는 사항과 해당되는 경우 예상되는 향후 변경 사항에 따라 다릅니다.

공백이없는 쿼리 목록 인 경우 다음과 같이 빠르고 지울 수 있습니다.

findstr "thing1 thing2 thing3 thing4 thing5" 그러한 것들이 존재하면 true로 평가되고 0을 종료합니다.

찾고있는 항목에 공백이 있으면 매개 변수 유형 findstr과 함께 리터럴 검색 문자열 을 사용해야 /c:""합니다. 공백이없는 경우에도이 유형의 매개 변수를 계속 사용할 수 있습니다.

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

그러나 , 당신은 빠르고 & 더러운 리터럴 결합 할 수 없습니다 . 예를 들어, 작동하지 않습니다.

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

이전 매개 변수를 리터럴 매개 변수로 변환해야합니다.

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

이 때문에 리터럴 옵션을 사용하는 것이 더 좋습니다. 동적 스크립트에서는 확장 성이 우수하기 때문입니다. 그러나 공백이없는 정적 쿼리 집합 인 경우 빠르고 더러운 방법으로 충분합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.