所以基本上我想打印出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
没有工作......
我不知道为什么,经过网上搜索后,我仍然不知道如何做对,有人能给我一些帮助吗?
答案 0 :(得分:2)
您的输入实际上是由空格而非TAB删除的。默认情况下,cut
需要TAB。这应该有效:
cut -d ' ' -f1,2,5,6
它将分隔符指定为' ' (空间)。
答案 1 :(得分:2)
我会在这里使用awk
,因为你可以用一个命令完成所有操作。
readelf -S hello | awk '/data|bss/ {print $1,$2,$5,$6}'
awk
可用于任何空格分隔符。一个空间,多个空格,标签等。