代码之家  ›  专栏  ›  技术社区  ›  DanM

如何从文件中提取单个字节块?

  •  54
  • DanM  · 技术社区  · 17 年前

    在Linux桌面(RHEL4)上,我希望从大文件(>1 gig)中提取一个字节范围(通常小于1000)。我知道文件中的偏移量和块的大小。

    我可以编写代码来完成这项工作,但是否有命令行解决方案?

    理想情况下,比如:

    magicprogram --offset 102567 --size 253 < input.binary > output.binary
    
    4 回复  |  直到 9 年前
        1
  •  81
  •   kenorb    11 年前

    尝试 dd :

    dd skip=102567 count=253 if=input.binary of=output.binary bs=1
    
        2
  •  24
  •   ChronoTrigger    9 年前

    这是一个旧问题,但我想添加另一个版本的 dd 更适合大字节块的命令:

    dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes 
    

    哪里 $offset 和 $bytes 是以字节为单位的数字。

    与托马斯接受的答案不同的是 bs=1 此处不显示。 Bs=1 生成输入和输出块大小为1字节,这使得当要提取的字节数很大时速度非常慢。

        3
  •  3
  •   Joe    17 年前

    dd命令可以执行所有这些操作。作为调用的一部分,查看seek和/或skip参数。

        4
  •  3
  •   Community Mohan Dere    9 年前

    head + tail

    不确定它与 dd 在效率方面,但很有趣:

    printf "123456789" | tail -c+2 | head -c3
    

    选取3个字节,从第2个字节开始:

    234
    

    另请参见: https://stackoverflow.com/a/1272995/895245

    推荐文章