Próbuję skopiować porcję z jednego pliku binarnego do nowego pliku. Mam przesunięcie bajtu i długość porcji, którą chcę pobrać.Jak pobrać dowolny fragment z pliku na systemie Unix/Linux
Próbowałem za pomocą programu narzędziowego dd
, ale to wydaje się czytać i usunąć dane do offsetu, a nie tylko poszukiwanie (chyba dlatego, dd jest do kopiowania/konwertowania bloki danych). . To sprawia, że dość wolno (i wolniej wyższa przesunięcie to jest polecenie próbowałem:
dd if=inputfile ibs=1 skip=$offset count=$datalength of=outputfile
Chyba mogę napisać mały Perl/Python/cokolwiek skrypt do otwarcia pliku, dążyć do przesunięcia, potem czytać i pisać wymaganą ilość danych w kawałki.
Czy istnieje narzędzie, które obsługuje coś takiego?
Próbowałem tylko działa na 'strace' dd, kiedyś llseek. – Hasturkun
to byłby GNU dd, btw. – Hasturkun
Ah, jestem na freebsd, więc może to inna implementacja. Może to jest powolne, ponieważ ustawiam rozmiar bufora wejściowego na 1 bajt. – kevinm