题
在Linux桌面(RHEL4)上,我想从大文件(> 1 Gig)中提取一系列字节(通常小于1000)。我知道文件的偏移量和块的大小。
我可以编写代码来执行此操作,但是有命令行解决方案吗?
理想情况下,如:
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
产生的输入和输出块大小为1个字节,这使得当提取的字节数很大时非常慢。
dd命令可以完成所有这些操作。查看搜索和/或跳过参数作为通话的一部分。
head
+ tail
不确定它与效率中的 dd
相比如何,但很有趣:
printf "123456789" | tail -c+2 | head -c3
从第二个开始选择3个字节:
234
更快
dd bs=<req len> count=1 skip=<req offset> if=input.binary of=output.binary
不隶属于 StackOverflow