awk生成代码

需求:在一个结构体中添加一个字段,结构体数组较大,且数十个文件中都有类似结构,所以考虑用脚本处理

假设结构体如下:

{
MAKE_ZOOM_VALUE(0x3ffb,XXX_OZOOM_L16),
0,
0x1990,
0x0398,
0x0298,
},

新添加数据

80

想法:考虑到每个结构体的第一项的最后几个字符都一样(XXX_OZOOM_L16),),以此为契机,用变量把两套数据关联起来。

具体做法:

1,把要添加的数据置为变量,awk脚本:awk '{print "NUM" ++i "=0x0" $0*10}'  from1.txt > to1.sh

执行后数据对应的行变为NUM1=0x0800并将数据保存在to1.sh里。

2,awk '{print $0} /XXX_OZOOM_L16/{print "$NUM" ++i}' zoomtble1.txt > zoomtble2.txt  (zoomtble1.txt中包含结构体数组)

处理之后结构体变为

{
MAKE_ZOOM_VALUE(0x3ffb,XXX_OZOOM_L16),

$NUMi
0,
0x1990,
0x0398,
0x0298,
},

将处理后的机构数组移到to1.sh中,cat << EOF,然后./to1.sh>result.c

result.c中的代码即为添加字段之后的代码。


初学awk及shell,如果有不准确的地方,欢迎指出。

同时欢迎更好的解决方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值