2013-03-17 2 views
0

현재 저는 때때로보고 싶은 시스템 로그 (이 경우에는 Growl.app)가 있습니다. grep을 사용하여보고 싶지 않은 행을 필터링합니다.grep을 느리게하는 대안

cat /Users/Daniel/Library/Logs/Growl.log | grep -vE 'registered|Display frame|Reserving|Used rects|Beginning a pass|Successfully reserved|Adjusted display frame|---|User went idle|User returned|positionDisplay|primaryDirection|Bowtie:|secondaryDirection' | tail -20 > /Users/Daniel/Library/Logs/Growl-log.txt 
sleep 2 
qlmanage -p /Users/Daniel/Library/Logs/Growl-log.txt 

나는 정보를 필터링 할 수있는 더 좋은 방법이 있다면 모르겠지만 그대로 내 스크립트는 명령을 처리하는 데 시간이 꽤 걸립니다. 내 하드웨어를 확실히 추가하지 않을 수도 있습니다. 'qlmanage'부분은 텍스트 파일의 내용을 '빠른보기'창에 표시하는 OS X 특정 명령입니다. 요청을 표시 할 때 즉시 나타납니다.

아이디어가 있으십니까?

+1

'cat filename | grep '패턴'. grep에 직접 파일 이름을 지정하십시오 :'grep 'patterns'filename'. –

답변

2

정말 커지고 계속 증가하는 파일을 시스템에서 읽으려면 많은 수의 검색 (각 변경 : | z | c | V ..etc)을 기반으로 많은 레코드를 제거하십시오. 그리고 당신이 그것을달라고 부탁 할 때마다, 그것은 더 많은 기록들을 쟁기질해야합니다.

로그에 타임 스탬프가 있습니까? 타임 스탬프 (또는 더 나은, 꼬리), grep과 함께, 당신은 훨씬 작은 파일에서 바로 원하는 것을 가지고있는 매일 또는 매시간 작업을 실행할 수 있습니다.

기본적으로 100 초 만에 MB를 읽을 수는 있지만 몇 초 안에 묻습니다. 파일 전체를 읽는 대신 파일 포인터를 배치하여 작동하는 꼬리부터 시작해 보겠습니다. 빨리.

tail -20000 /Users/Daniel/Library/Logs/Growl.log | 
grep -vE 'registered|Display frame|Reserving|Used rects|Beginning a pass|Successfully reserved|Adjusted display frame|---|User went idle|User returned|positionDisplay|primaryDirection|Bowtie:|secondaryDirection' | 
> /Users/Daniel/Library/Logs/Growl-log.txt 
qlmanage -p /Users/Daniel/Library/Logs/Growl-log.txt 

필터를 통과하는 적절한 샘플 수를 얻기 위해 20000을 조정하십시오. 다른 말로하면 prefilter 어쨌든 피치 할 초기 레코드를 제거하여 파일.

다른 속도는 긍정적 인 검색을하는 것입니다. grep은 원하지 않는 것보다 원하는 것입니다.

축하합니다. 당신은 또한 UUOC 상을 받았습니다. 구글 UUOC (고양이와 관련이있다)이라는 단어를 사용해보십시오. 사람들은 그것에 대해 알기 전에 상을 수상했습니다.

+0

올바른 방향으로 나를 가르쳐 주셔서 감사합니다. 정말 원래 로그 파일이 얼마나 커 졌는지 알지 못했습니다. (이 질문을하기 전에 조사를 해봐야했습니다.) 이제 좀 더 최근의 로그로 자르기 만하면됩니다. 자동화가 상당히 쉬운 작업입니다. – user1345658

관련 문제