2017-04-20 1 views
0

파일의 여러 단어를 찾으려면 powershell cmdlet을 작성하려고합니다. 예. "word1", "word2", "word3"은 파일의 같은 줄에 있습니다. 내가 성공하지이 시도하기 때문에 내가 뭔가를 잘못하고 있어요 :powershell 여러 키워드를 구문 분석하고 텍스트 파일로 출력 보내기

파일 이름 = 파일, 즉 OutputfileName의 이름은 = 세 단어의 내 검색에서 파일을 생성
(gci -File -Filter FileName | Select-String -SimpleMatch word1, word2,word3) > outputFileName.txt 

. 고맙습니다.

+0

[?이처럼] (http://stackoverflow.com/questions/43450914/how-to-use-findstr-in-powershell-to-find-lines-where -all-words-in-the-search-str/43451196 # 43451196) –

+0

안녕하세요 Mathais R Jessen입니다. 제 코드를 다시 편집하십시오. 우연히 편집을 덮어 썼습니다. 감사합니다 –

+0

완료. 위의 링크를 보시고, 질문은 말 그대로 파일 부분 (이미 알아 낸 부분)으로 출력하는 것을 제외하고 동일합니다 –

답변

0

Select-String에는 내가 생각할 수있는 조합 연산자가 없습니다. 당신의 말들이 항상 그 순서대로 있다면, 당신은 -Pattern 'word1.*word2.*word3'을 당신의 성냥으로 할 수 있습니다, 그러나 그들이 어떤 순서로있을지라도 매우 빨리 복잡해질 수 있습니다. 대신, 나는

.. | Select-String 'word1' | Select-String 'word2' | Select-String 'Word3' 

이므로, word1과 일치하는 모든 줄을 보았습니다. 그 중 어딘가에서 word2와 일치하는 단어 중 하나입니다. 그보다 작은 결과에서 word3과 일치하는 단어도 있습니다.

+0

@BenQ 만약이 답이 당신의 문제를 해결했다면 왼쪽의 체크 표시를 클릭하여 "받아 들였습니다"라고 대답하십시오. –

+0

이 주제에 대한 마지막 질문으로,'Select-AllStrings를 사용하여 여러 개의 Select-String을 리팩토링 할 수 있습니까? '. 그것을 시도했지만 Powershell 키워드가 존재하지 않습니다. –

+0

정확하게 원래의 질문이 아니며 제 답변이 응답하고 있습니까? 그것은 당신이 당신의 쿼리를 정규식으로 작성할 수 없다면 아는만큼 멀리 할 수 ​​없지만 어순이 매우 다양하고 선택 문자열을 사용하고자한다면 함께 연결할 수 있습니다. select-string에 집착하지 않는다면, 각 파일에'get-content '를 사용할 수 있고, 줄을 반복하고'($ _ -match'word1 ') -와 ($ _ -match' word2 ') -와 ($ _ -match'word3 ')'하지만 길고 깔끔한 코드는 아닙니다. – TessellatingHeckler

0

이 시도 :

[email protected]("word1", "word2", "word3") 

Get-ChildItem "c:\temp\" -file | %{$currentfile=$_.FullName; Get-Content $_.FullName | 
        %{ 
         $founded=$true 
         foreach ($item in $wordlist) 
         { 
          if (!$_.Contains($item)) 
          { 
           $founded=$false 
           break 
          } 
         } 

         if ($founded) 
         { 
          $currentfile 
         } 


        } 
} 
+0

감사합니다. @ Esperento57. this soon soon –

+0

string.Contains()는 대소 문자를 구분합니다. select-string은 대소 문자를 구분하지 않습니다. – TessellatingHeckler

관련 문제