1.读elf文件
arm-eabi-nm *.elf
2.awk字符判断 及 if语句
| 运算符 | 描述 |
|---|---|
| 赋值运算符 | |
| = += -= *= /= %= ^= **= | 赋值语句 |
| 逻辑运算符 | |
| || | 逻辑或 |
| && | 逻辑与 |
| 正则运算符 | |
| ~ ~! | 匹配正则表达式和不匹配正则表达式 |
| 关系运算符 | |
| < <= > >= != == | 关系运算符 |
| 算术运算符 | |
| + - | 加,减 |
| * / & | 乘,除与求余 |
| + - ! | 一元加,减和逻辑非 |
| ^ *** | 求幂 |
| ++ -- | 增加或减少,作为前缀或后缀 |
| 其它运算符 | |
| $ | 字段引用 |
| 空格 | 字符串连接符 |
| ?: | C条件表达式 |
| in | 数组中是否存在某键值 |
awk -F " " '
{
if(""$2""~/T/)
printf("%x, %s, %s\n", ""$1"", ""$2"", ""$3"");
}
'
3.awk打印16补齐空位
#!bin/sh
arm-eabi-nm 1.test.axf |
awk -F " " '
{
if(""$2""~/T/)
printf("0x%08x, %s, %s\n", ""$1"", ""$2"", ""$3"");
}
'
4.awk实现16进制加法
#!bin/sh
arm-eabi-nm 1.test.axf |
awk -F " " '
{
if(""$2""~/T/)
printf("%d, %s, %s\n", ""$1+1"", ""$2"", ""$3"");
else
printf("%d, %s, %s\n", ""$1"", ""$2"", ""$3"");
}
'
5.awk 计数
#!bin/sh
arm-eabi-nm 1.test.axf |
awk -F " " '
{
if(""$2""~/T/)
printf("%d %s %s\n", ""$1+1"", ""$2"", ""$3"");
else
printf("%d %s %s\n", ""$1"", ""$2"", ""$3"");
}
'|
awk -F " " '
BEGIN{i=0;}
{
i++;
printf("{0x%08x, %s},\n", ""$1"", ""$3"");
}
END{printf("i=%d\n",i)}
'
补充:
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
\n 换行
\f 清屏并换页
\r 回车
\t Tab符
\xhh 表示一个ASCII码用16进表示,其中hh是1到2个16进制数
awk 的链接指向不同,可能需要:
echo a36b | gawk ' { printf "input is :%s\n",strtonum("0x" $0)}'
本文介绍如何利用awk工具处理ELF文件中的数据,包括字符判断、16进制数值的打印与补全、实现16进制加法以及计数等操作。通过具体示例展示了awk的强大功能。
291

被折叠的 条评论
为什么被折叠?



