2014-04-21 68 views
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沒有工作......

我不知道爲什麼和網上經過一番搜索,我還是不知道怎麼做是正確的,可能的你能給我一些幫助嗎?

回答

2

我會在這裏使用awk,因爲您可以使用一個命令完成所有操作。

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

awk將使用任何空格分隔符。一個空間,多個空間,標籤等。

2

您輸入的內容實際上是由不是TAB的空格消除的。默認情況下,cut需要TAB。這應該工作:

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

它指定分隔符爲 ''(空格)。

相關問題