1

所以基本上我想打印出 ELF 二进制文件的.data,.rodata.bss部分的某些列,我使用这个命令:

readelf -S hello | grep "data\|bss" | cut -f1,2,5,6

但令我惊讶的是,结果是:

 [15] .rodata           PROGBITS        080484d8 0004d8 000020 00   A  0   0  8
 [24] .data             PROGBITS        0804a00c 00100c 000008 00  WA  0   0  4
 [25] .bss              NOBITS          0804a014 001014 000008 00  WA  0   0  4

这意味着cut没有工作...

不知道为什么,在网上搜索了一些之后,我仍然不知道如何正确,谁能给我一些帮助?

4

2 回答 2

2

您的输入实际上是由空格而不是 TAB 分隔的。默认情况下cut需要 TAB。这应该有效:

cut -d ' ' -f1,2,5,6

它将分隔符指定为“”(空格)。

于 2014-04-21T05:17:55.183 回答
2

我会在awk这里使用,因为您可以使用一个命令完成所有操作。

readelf -S hello | awk '/data|bss/ {print $1,$2,$5,$6}'

awk将使用任何空格作为分隔符。一个空格、多个空格、制表符等。

于 2014-04-21T05:30:45.163 回答