sed -n '10000000,10000020p' filename
다음과 같이 약간 속도를 높일 수 있습니다.
sed -n '10000000,10000020p; 10000021q' filename
이러한 명령에서이 옵션 -n
은 sed
"패턴 공간의 자동 인쇄 억제"를 유발 합니다. p
명령 "인쇄 [S] 현재 패턴 공간"및 q
명령은 "즉시 더 이상의 입력을 처리하지 않고 [S]를 나오지도 스크립트를 종료 ..."따옴표는 출신 sed
man
페이지 .
그건 그렇고, 당신의 명령
tail -n 10000000 filename | head 10
파일 의 끝 에서 천만 번째 줄에서 시작 하는 반면 "중간"명령은 처음부터 천만 번째에서 시작 하는 것처럼 보입니다 .
head -n 10000010 filename | tail 10
문제는 가변 길이 줄을 가진 정렬되지 않은 파일의 경우 모든 프로세스가 줄 바꿈을 계산하는 파일을 거쳐야한다는 것입니다. 바로 가기 방법은 없습니다.
그러나 파일이 정렬되거나 (예를 들어 타임 스탬프가있는 로그 파일) 고정 길이 줄이있는 경우 바이트 위치를 기준으로 파일을 찾을 수 있습니다. 로그 파일 예제에서 내 파이썬 스크립트 * 와 같이 일정 시간 동안 이진 검색을 수행 할 수 있습니다 . 고정 레코드 길이 파일의 경우 정말 쉽습니다. 당신 linelength * linecount
은 파일에 문자를 추구 합니다.
* 나는 그 스크립트에 또 다른 업데이트를 게시하는 것을 의미합니다. 요즘 어쩌면 나는 그것에 대해 갈 것입니다.