Я исследую некоторые объекты внутри ELF-файла и использую readelf для этой цели.
Этот образец readelf показывает размер (в байтах) объектов в столбце 3,
В целомобъекты, печатные копии в шестнадцатеричном формате вместо десятичных,
Это ломает мои попытки сортировки по размеру.(сортировка игнорирует шестнадцатеричное значение)
Num: Value Size Type Bind Vis Ndx Name
1369: 808ec6e8 2048 OBJECT LOCAL DEFAULT 26 _ZN2cvL12NNDeltaTab_iE
1370: 8086e6e8 0x20000 OBJECT LOCAL DEFAULT 26 _ZN2cvL13Lanczos4Tab_iE
Я попытался перевести все шестнадцатеричные значения в dec следующим образом:
readelf -sW target.elf | perl -pe 's/(0x)?[0-9a-f]{5,}/hex $&/ge' | sort -k 3 -n -r
и получил
1369: 2156840680 2048 OBJECT LOCAL DEFAULT 26 _ZN2cvL12NNDeltaTab_iE
1370: 2156324584 131072 OBJECT LOCAL DEFAULT 26 _ZN2cvL13Lanczos4Tab_iE
Столбец размера (3) переводится в dec, что хорошо,
Но также столбец 2 переводится в dec, что плохо ..
Я нашел это:
perl -lane '$F[1]=~tr/A/B/;print join("\t", @F)' file
из
найти-и-заменить-привязать-к-определенному-столбцу-одному-вкладышу
Но я не могу объединить эти две команды.
Как я могу перевести только столбец 3 в декабрь?
Спасибо