답변:
스위치 를 사용하여 tail 을 사용하여 마지막 4GB 정도만 출력 할 수 있다고 생각합니다.-c
-c, --bytes = [+] NUM
은 마지막 NUM 바이트를 출력합니다. 또는 -c + NUM을 사용하여 각 파일의 바이트 NUM으로 시작하여 출력하십시오.
예를 들어 시작하려는 오프셋 으로 설정 하고 ing하여 dd로 무언가를 할 수도 있습니다.bs=1
skip
dd if=file bs=1024k skip=12g | grep something
의견 중 일부가 요청했기 때문에 이것을 게시하고 있습니다.
내가 결국 사용하는 것은 (15GB 파일)이었습니다. 그것은 매우 빠르게 작동하여 많은 시간을 절약했습니다.
tail -f -c 14G file | grep something
또한 동일한 파일에서 매우 기초적인 벤치 마크를 수행했습니다. 나는 테스트했다 :
grep xxx 파일
// 영원히 걸렸습니다 (> 5 분)dd if = 파일 bs = 1 skip = 14G | grep xxx
// 매우 빠름 <1 초꼬리 -c 14g | grep xxx
// 꽤 빠름 <2 초
은 tail
조금 짧습니다.
NB : 사용 된 접미사 g
및 G
명령마다 다릅니다 (Ubuntu 15.10)
제목 질문에는 대답하지 않지만 원하는 작업을 수행합니다. tac를 사용하여 파일을 뒤집은 다음 grep을 사용하여 문자열을 찾으십시오. 문자열이 파일에서 한 번만 또는 알려진 횟수만큼 발생하면 알려진 횟수를 찾을 때까지 실행되도록하십시오. 그렇게하면 파일의 위치에 대한 가정이 틀리더라도 여전히 찾을 수 있습니다. 제한하고 싶다면 head를 사용하면됩니다. head 명령은 전술과 grep 사이에 있습니다.
따라서 명령은 다음과 같습니다.
tac < logfile | grep myString
tac
없어서 고마워!
LC_ALL=C grep
속도가 빨라질 수 있습니다.