This should do it (on gnu dd):
dd if=somefile bs=4096 skip=1337 count=31337000 iflag=skip_bytes,count_bytes
In case you are using seek=
as well, you may also consider oflag=seek_bytes
.
From info dd
:
`count_bytes'
Interpret the `count=' operand as a byte count, rather than a
block count, which allows specifying a length that is not a
multiple of the I/O block size. This flag can be used only
with `iflag'.
`skip_bytes'
Interpret the `skip=' operand as a byte count, rather than a
block count, which allows specifying an offset that is not a
multiple of the I/O block size. This flag can be used only
with `iflag'.
`seek_bytes'
Interpret the `seek=' operand as a byte count, rather than a
block count, which allows specifying an offset that is not a
multiple of the I/O block size. This flag can be used only
with `oflag'.
Ps: I understand this question is old and it seems these flags were implemented after the question was originally asked, but since it's one of the first google results for a related dd search I did, I though it would be nice to update with the new feature.
Note: this answer applies only to GNU dd, used by most Linux distributions, it's part of GNU coreutils package, this feature was introduced on coreutils release 8.16 (2012-03-26, a couple months after the original question was answered).
Note for Mac users: MacOS uses a bsd based variant of unix utils (for licensing reasons mostly), but GNU versions of unix utilities in general have much more active development and usually have much more features. You can install GNU coreutils on Mac with Homebrew: brew install coreutils
.