二进制文件中cut和dd的结果不同

时间:2015-04-01 01:46:48

标签: linux binaryfiles elf cut dd

我的环境:

CentOS 6.5

我需要提取ELF文件的某些部分。

当我使用dd命令时,我没有问题:

$dd if=a.out of=a.cut1 bs=1 skip=16    

另一方面,当我按如下方式使用cut命令时,创建的文件的大小远小于我的预期:

$cut --bytes=16- a.out > a.cut2

<小时/> 例如,我通过使用gcc(v.4.4.7)编译以下示例c程序来创建a.out:

#include <stdio.h>

int main()
{
    printf("Hello world\n");
}

然后,我执行上述ddcut命令,我有以下大小的文件:

a.out - 6415 bytes
a.cut1 - 6399 bytes
a.cut2 - 6356 bytes

我想知道为什么cut命令会减小比我指定的大小。

1 个答案:

答案 0 :(得分:5)

cut将跳过每行的前16个字节 ,而dd不关心行,只跳过整个文件的前16个字节。

如果文件包含换行符 - 这对二进制文件完全有效 - 那么cut将产生与dd不同的结果。