如何从文件中提取单个字节块?
在Linux桌面(RHEL4)上,我想从大文件(> 1 Gig)中提取一个范围的字节(通常小于1000)。 我知道文件的偏移量和块的大小。
我可以编写代码来做到这一点,但有没有一个命令行解决scheme?
理想情况下,如下所示:
magicprogram --offset 102567 --size 253 < input.binary > output.binary
尝试dd
:
dd skip=102567 count=253 if=input.binary of=output.binary bs=1
这是一个古老的问题,但我想添加更适合于大块字节的dd
命令的另一个版本:
dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes
$offset
和$bytes
是以字节为单位的数字。
与托马斯接受的答案不同的是, bs=1
在这里没有出现。 bs=1
产生input和输出块的大小为1个字节,这使得当提取的字节数很大时非常慢。
dd命令可以完成所有这些。 作为调用的一部分,查看seek和/或skip参数。
head
+ tail
不知道它如何比较dd
效率,但它很有趣:
printf "123456789" | tail -c+2 | head -c3
挑选3个字节,从第二个开始:
234
另请参阅: https : //stackoverflow.com/a/1272995/895245