2013-09-06 2 views
1

큰 로그 파일을 필터링하려고합니다. 로그에서 행을 읽는 방법이 있습니까? 행에 2 문자 미만이 포함되어 있고 전원 스크립트를 사용하여 로그에서 전체 행을 삭제하면파워 스크립트를 사용하여 큰 로그 파일 필터링

문자를 세는 방법이 생겼습니다. 이것은 각 줄을 계산하고

Get-Content ./output.txt | ForEach-Object { $_ | Measure-Object -Character } | Out-File count.txt 

파일은 다른 파일

로 계산 문자를 출력하고 난 빈 줄을 삭제하는 방법을 알고

Get-Content .\output.txt | where {$_ -ne ""} | Set-Content out.txt 

또는 파이프에

Get-Content .\in.txt | Where-Object {$_ -notmatch 'STRING'} | Set-Content out.txt 

이 거기에 출력을하는 방법을 특정 문자 나 문자열을 포함하고 기본적으로

"카운트가 < = 1 로그에서 해당 줄을 삭제하는 경우"물어 선

for each line 
     if line is <= 1 delete line 
     else leave alone 

는 내가 열심히 다른 사람에게 의미가있는 방식으로, 때로는 뭐죠 내 머리에 나가 찾아,이 너희들에게 의미가 있기를 바랍니다. 도움이 될 것입니다.

답변

3

$ _는 [string]/System.String이며 문자열에는 문자열의 길이를 알려주는 속성 및 메서드가 있습니다.

Get-Content .\output.txt | where {$_.Length -gt 1} | Set-Content out.txt 
+0

감사로드 : 그리고 그것은 의미가 있습니다 – Andy

0

미만이 개 문자로 라인을 제거하는 정규 표현식을 사용하려면 다음을 수행 할 수 있습니다 포함하지 않음 (2 자 이상으로

Get-Content .\in.txt | ? { $_ -match '..' } | Set-Content .\out.txt 

표현 .. 일치 문자열을 줄 바꿈).

+0

똑똑하고, 효과가있었습니다. 고마워요. 어떻게 또는 왜 작동하는지 모르겠지만 그것을 해결할 것입니다. – Andy

+0

'Get-Content'는 파일의 내용을 줄의 배열로 반환합니다. 정규 표현식은 2 개 이상의 문자가있는 모든 행을 전달하고 나머지는 버릴 수 있습니다. –

관련 문제