Shell脚本------解析elf文件及awk基本使用
2013-12-07 01:25
651 查看
1.读elf文件
arm-eabi-nm *.elf
2.awk字符判断 及 if语句
[cpp]
view plaincopyprint?
awk -F " " ' { if(""$2""~/T/) printf("%x, %s, %s\n", ""$1"", ""$2"", ""$3""); } '
3.awk打印16补齐空位
[cpp]
view plaincopyprint?
#!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进制加法
[cpp]
view plaincopyprint?
#!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 计数
[cpp]
view plaincopyprint?
#!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进制数
arm-eabi-nm *.elf
2.awk字符判断 及 if语句
运算符 | 描述 |
---|---|
赋值运算符 | |
= += -= *= /= %= ^= **= | 赋值语句 |
逻辑运算符 | |
|| | 逻辑或 |
&& | 逻辑与 |
正则运算符 | |
~ ~! | 匹配正则表达式和不匹配正则表达式 |
关系运算符 | |
< <= > >= != == | 关系运算符 |
算术运算符 | |
+ - | 加,减 |
* / & | 乘,除与求余 |
+ - ! | 一元加,减和逻辑非 |
^ *** | 求幂 |
++ -- | 增加或减少,作为前缀或后缀 |
其它运算符 | |
$ | 字段引用 |
空格 | 字符串连接符 |
?: | C条件表达式 |
in | 数组中是否存在某键值 |
view plaincopyprint?
awk -F " " ' { if(""$2""~/T/) printf("%x, %s, %s\n", ""$1"", ""$2"", ""$3""); } '
awk -F " " ' { if(""$2""~/T/) printf("%x, %s, %s\n", ""$1"", ""$2"", ""$3""); } '
3.awk打印16补齐空位
[cpp]
view plaincopyprint?
#!bin/sh arm-eabi-nm 1.test.axf | awk -F " " ' { if(""$2""~/T/) printf("0x%08x, %s, %s\n", ""$1"", ""$2"", ""$3""); } '
#!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进制加法
[cpp]
view plaincopyprint?
#!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"");
}
'
#!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 计数
[cpp]
view plaincopyprint?
#!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)}
'
#!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进制数
相关文章推荐
- Shell脚本------解析elf文件及awk基本使用
- 如何方便的使用shell脚本来解析xml文件
- 一个使用shell脚本实现的修改文件中的字符串
- shell脚本中使用iconv实现批量文件转码
- 使用shell脚本进行服务器系统监控——文件系统监控(2)
- shell脚本基本使用
- 使用getopt命令解析shell脚本的命令行选项
- FTP定时批量下载文件(SHELL脚本及使用方法 )
- shell学习4--awk的基本使用
- 【Linux】使用sed、awk来完成批量修改配置文件的shell设计
- Linux中使用shell脚本向文件中写数据
- shell脚本中使用ftp进行文件的上传
- 在shell脚本里使用sftp批量传送文件
- 使用getopt命令解析shell脚本的命令行选项
- 如何在shell脚本里使用sftp批量传送文件
- 使用shell脚本进行服务器系统监控——文件系统监控(1)
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
- 数组-在Shell脚本中的基本使用介绍
- 使用linux 的shell脚本进行sftp文件上传与下载 【转】
- 【Linux】使用SHELL脚本实时查看文件大小