2014-10-03 2 views
-1

최대 8k 바이트의 메시지를 수신하는 로그 파일이 있습니다. 나는 그 메시지를 더 작게하고 싶다. 나는 현재 로그 파일을 tail -c +1 -F으로 꼬리를 달리고 있지만 이것은 전체적으로 8k 크기의 메시지를 포착합니다. tail -c 2048 -F과 같은 것을하고 싶지만 msgs에서 텍스트와 텍스트를 잃고 싶지는 않습니다. tail -c 1024 -F은 msg가 1024 바이트 이상인 경우 msg의 일부를 잃게됩니까?꼬리 '-c'매개 변수는 줄의 지정된 바이트 수만 반환합니까? 또는 전체 행을 -c 바이트 덩어리로 반환합니까?

추가 정보 : 파이썬에서 tail 명령을 호출하고 메시지가 너무 큰 경우 필터링에 정규식 필터링이 지연됩니다.

for line in sh.tail("-c", "4096", "-F", path, _iter=True): 
    # Doing some regex filtering here 
+0

어떤 개체에'꼬리'방법이 있습니까? – chepner

+0

코드 *에서 볼 수있는 것부터 "파이썬에서 꼬리 명령을 호출"하지 않고 일부 매개 변수를'sh' 객체의'tail' 메소드에 전달합니다. –

+0

'sh'는 일부 시스템 프로그램을 호출 할 수있는 패키지입니다. 다음은 문서입니다. http://amoffat.github.io/sh/# – steve

답변

-1

tail -n +2은 두 번째 줄부터 끝까지 모든 것을 인쇄합니다. 찾고있는 것은 다소 tail -n 2 이하일 수 있습니다 : tail -2 이것은 마지막 두 줄을 차지합니다.

같은 스키마는 바이트에 적용 man tail으로

는 말한다 :

-c, --bytes=K output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file

RTFM을?

+0

내 유닉스 시스템의 내 문서는 당신의 것과 다르며 설명이 부족한 것처럼 보입니다. – steve

+0

http://www.gnu.org/software/coreutils/manual/coreutils.html#tail-invocation && http://linux.die.net/man/1/tail 그리고 다음에 유닉스의 풍미를 지정하십시오. gnu/linux와 solaris와는 미묘한 차이가있다. –

관련 문제