sed -n '10000000,10000020p' filename
Bạn có thể tăng tốc một chút như thế này:
sed -n '10000000,10000020p; 10000021q' filename
Trong các lệnh đó, tùy chọn -n
gây ra sed
"triệt tiêu tự động in không gian mẫu". Các p
lệnh "in [s] không gian mô hình hiện tại" và q
lệnh "Ngay lập tức bỏ [s] kịch bản sed mà không xử lý bất kỳ đầu vào hơn ..." Các dấu ngoặc kép là từ sed
man
trang .
Nhân tiện, lệnh của bạn
tail -n 10000000 filename | head 10
bắt đầu ở dòng mười phần triệu từ cuối tệp, trong khi lệnh "giữa" của bạn dường như bắt đầu ở phần mười triệu từ đầu , tương đương với:
head -n 10000010 filename | tail 10
Vấn đề là đối với các tệp chưa được sắp xếp với các dòng có độ dài thay đổi, bất kỳ quá trình nào cũng sẽ phải trải qua các tập tin đếm dòng mới. Không có cách nào để tắt nó.
Tuy nhiên, nếu tệp được sắp xếp (ví dụ: tệp nhật ký có dấu thời gian) hoặc có các dòng có độ dài cố định, thì bạn có thể tìm kiếm tệp dựa trên vị trí byte. Trong ví dụ về tệp nhật ký, bạn có thể thực hiện tìm kiếm nhị phân trong một khoảng thời gian như tập lệnh Python của tôi ở đây *. Trong trường hợp tệp có độ dài bản ghi cố định, nó thực sự dễ dàng. Bạn chỉ cần tìm kiếm các linelength * linecount
ký tự vào tập tin.
* Tôi giữ ý nghĩa để đăng một bản cập nhật khác cho kịch bản đó. Có lẽ tôi sẽ đi xung quanh nó một trong những ngày này.