Odpowiedzi:
DareDevil z komend Uniksa, dd
na ratunek!
dd if=yourfile ibs=1 skip=200 count=100
To zaczyna się od bajtu 200 i pokazuje 100 kolejnych bajtów, czyli innymi słowy bajty 200-300. ibs
oznacza, że dd odczytuje tylko jeden bajt naraz zamiast domyślnych 512 bajtów, ale nadal zapisuje w domyślnych porcjach 512-bajtowych. Idź i zobacz, czy to ibs
szkodzi wydajności, mam nadzieję, że nie.
Możesz użyć dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(być może z, bs=1
aby uzyskać bloki jednobajtowe, w przeciwnym razie używa bloków 512-bajtowych). Nie jestem jednak pewien, jak efektywnie jest mówić po jednym bajcie na raz.
dd
można łączyć ze sobą rurami (1. może przeciąć kawałek tłuszczu, a 2. wykona świetną robotę nad rurą, a nie dyskiem), ale dd
ma nie tylko bs
oddzielne ibs
i obs
również, więc na przynajmniej mógłby generować z większymi blokami niż czytanie.
Zakładając, że plik nie jest zbyt duży (np. Kilka GB lub więcej), przesyłanie strumieniowe z jednego do drugiego jest tak wydajne, jak to tylko możliwe, bez pisania własnego programu, aby to zrobić.
head ... file | tail ...
(Lub na odwrót. Cokolwiek.)
time dd if=file.txt | wc -l
= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l
= 9:05:19