2014-04-21 5 views
1

Donc, fondamentalement, je veux imprimer certaines colonnes des .data, .rodata et .bss sections d'un binaire ELF, et j'utiliser cette commande:Pourquoi couper ne peut pas fonctionner?

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

mais à ma grande surprise, les résultats sont les suivants:

[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 

qui signifie que le cut ne fonctionne pas ...

Je ne sais pas pourquoi et après une recherche en ligne, je ne sais pas encore comment le faire droit, pourrait un Tu me donnes de l'aide?

Répondre

2

J'aurais utilisé awk ici puisque vous pouvez tout faire avec une seule commande.

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

awk travaillera avec un espace vide d'un séparateur. Un espace, plusieurs espaces, onglets, etc.

2

Votre entrée est réellement désactivée par des espaces non TAB. Par défaut cut attend TAB. Cela devrait fonctionner:

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

Il spécifie le délimiteur comme '' (espace).

Questions connexes