Câu trả lời:
DareDevil của các lệnh Unix, dd
để giải cứu!
dd if=yourfile ibs=1 skip=200 count=100
Điều đó sẽ bắt đầu từ byte 200 và hiển thị 100 byte tiếp theo, hay nói cách khác, byte 200-300. ibs
có nghĩa là dd chỉ đọc một byte mỗi lần thay vì 512 byte mặc định, nhưng vẫn ghi ra trong các đoạn 512 byte mặc định. Đi và xem nếu ibs
làm hại hiệu suất, tôi hy vọng không.
Bạn có thể sử dụng dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(có thể với bs=1
để có được các khối một byte, nếu không, nó sử dụng các khối 512 byte). Dù vậy, không chắc là nó hiệu quả đến mức nào để bảo nó viết một byte mỗi lần.
dd
's có thể ống-xích với nhau (ngày 1 có thể cắt mảnh chất béo và thứ 2 sẽ làm việc tốt trên các đường ống, không đĩa), nhưng dd
có không chỉ bs
nhưng riêng biệt ibs
và obs
là tốt, vậy tại ít nhất nó có thể xuất ra với khối lớn hơn đọc.
Giả sử tệp không quá lớn (ví dụ: vài GB hoặc hơn), việc chuyển từ một đến kế tiếp sẽ hiệu quả như bạn sẽ nhận được, không cần viết chương trình của riêng bạn để làm như vậy.
head ... file | tail ...
(Hoặc cách khác xung quanh. Bất cứ điều gì.)
time dd if=file.txt | wc -l
= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l
= 9:05:19