2013-10-31 3 views
0

파일에서 특정 줄을 찾으려고합니다. Select-String을 사용하여 일치하는 항목을 얻으려는 경우 전체 줄을 필요로하지 않고 줄에서 하나의 특정 부분 만 원합니다 (오류 부분).powershell을 사용하여 줄에서 특정 부분을 가져 오는 중

이 작업을 수행하는 데 사용할 수있는 매개 변수가 있습니까? 내가

select-string USERINTERACTION file.txt 

를하고 파일로 선 포함 된 경우

가 :

MainControlInterleaf-D: 21:59:14:631: myErrorShowTracer (300) -> Info:: USERINTERACTION: <this is the error part> from type <1> occured 

내가 전체의 단지 대신 결과를 얻을 싶습니다 예를 들어

라인 반환.


편집 : 깜빡 한 가지 더 : 선 사이에 차이가있는 경우, 내가 코드를 변경하려면 어떻게해야합니까?

예를 들어

:

log-29-10-2013_00-11-52.txt:2737:MainControlInterleaf-D: 02:50:50:097: myErrorShowTracer (300) -> Info:: USERINTERACTION: <this is the error1> from type <1> occured 
log-29-10-2013_00-11-52.txt:2732:MainControlInterleaf-D: 02:50:39:933: myErrorQuitTracer (350) -> Info:: USERINTERACTION <this is the error2<br> OK ... try again.<br> 

답변

0

선택 - 문자열이 같은 것을 사용하고자하는 MatchInfo 개체를 출력합니다 file.txt를 정말 큰 파일이 아니라면

Select-String 'USERINTERACTION:\s*(.*?occured)' file.txt | Foreach {$_.matches.groups[1].value} 
+0

이 오류가 발생했습니다.이 오류가 발생했습니다. "null 배열에 색인을 생성 할 수 없습니다." –

+0

토큰 USERINTERACTION 이후에 오류가 발생했음을 알 수 없었습니다. –

0

이 작동합니다 '

$regex = '.+USERINTERACTION: (.+) from type <1> occured' 
(get-content file.txt) -match $regex -replace $regex,'$1' 
+0

감사합니다, 그것은 작동합니다 :-) –

0

방법에 대한 선택 문자열 -pattern foo는 -Path X : \ myfile을. txt

0

특정 결과를 반환하려고하지만 특정 기준을 스크립트에 제공하지 마십시오.

RegEx와 일치하도록하십시오 (RegEx에서 파이프를 사용하여 로직 OR 게이트를 형성하고 다른 패턴을 처리 할 수 ​​있음을 기억하십시오).

Here's a fairly decent starting point for getting into this kind of solution, POSH (또는 전혀)에 RegEx에 익숙하지 않은 경우.

관련 문제