Может быть, прочитать несколько байтов до границы 4 КБ, а затем вторую команду, чтобы добавить остальные?
Предполагая, что мы хотим закончить на границе 4K (большинство файловых систем, похоже, используют внутренние буферы 4K).
- Перейдите к той части, где вы хотите начать читать. (bs = 1 пропуск = 143254)
- читать с 143254 по 143254 с bs = 1 и счетом = 3990
- Прочитайте остальную часть файла с bs = 4k и добавьте его в выходной файл. (Смотрите, как добавить данные в файл с помощью dd здесь, на SU)
Если это слишком медленно и вы пишете это как повторяющуюся задачу, вы можете даже оптимизировать ее, выполнив 512b чтений для первых 3584 байтов (7 * 512), затем 400-разрядные однобайтовые чтения, а остальные - размером 4 КБ.
Обратите внимание, что этот ответ воспринимается как обходной путь. Я буду любить читать другие ответы, которые привлечет этот вопрос. Может быть, даже чистое решение, которое просто ищет 143254, а затем использует обычную опцию чтения / записи для копирования, что позволяет использовать настройки файловой системы по умолчанию, а не мои явные предположения о 4k внутренних буферах.