免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: unbutun
打印 上一主题 下一主题

请教,如何用sed匹配c函数 [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
21 [报告]
发表于 2011-12-20 16:28 |只看该作者
Shell_HAT 发表于 2011-12-20 00:23
http://sedsed.sourceforge.net/

长期以来,我写sed程序一直没有借助sed调试器去调试,自己调试起来比较郁闷.下载了一下这个sedsed,还没用过.
似乎以前就有人很推崇这个sedsed,有空我试试看看.

论坛徽章:
0
22 [报告]
发表于 2011-12-20 22:48 |只看该作者
本帖最后由 unbutun 于 2011-12-20 22:49 编辑

实际上我现在是需要在一堆c文件中找到我指定的几个函数,然后在函数后面加一些东西,但是不知道怎么用sed找到函数尾并把hold空间的东西追加到函数尾



如:

int test (int argc, char ** argv)
{
        int value = 3;

       if (value == 1)
       {
              printf("%d", value);
       } else {
             if()
             {
                     printf("%d\n", value);
             }
       }
      
       if (value > 0) {
              printf("%d\n", value);
      }

        return 0;
}

int test_a (int argc, char ** argv) attribute("align");

因为这样的至少有个几百个,要是手动改就吐血了

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
23 [报告]
发表于 2011-12-21 00:41 |只看该作者
unbutun 发表于 2011-12-20 22:48
实际上我现在是需要在一堆c文件中找到我指定的几个函数,然后在函数后面加一些东西,但是不知道怎么用sed找 ...

为什么一定要sed呢,awk解决应该更方便易读。

int test (int argc, char ** argv)
比如

awk -v C_FUNCTION_NAME='int test_a \(int argc, char \*\* argv\) ' '$0~C_FUNCTION_NAME {p=1}p&&/\{/{t++}p&&/\}/{t--}t==0{print $0}p&&t{这里可以执行你想要的操作}'  file

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
24 [报告]
发表于 2011-12-21 08:55 |只看该作者
unbutun 发表于 2011-12-20 22:48
实际上我现在是需要在一堆c文件中找到我指定的几个函数,然后在函数后面加一些东西,但是不知道怎么用sed找 ...

其实我的建议不是用sed来做这件事情,而可以用ctags,etags做这件事情.

论坛徽章:
0
25 [报告]
发表于 2011-12-21 20:06 |只看该作者
ctags可以找到函数,但是如何在函数后面加东西呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
26 [报告]
发表于 2011-12-21 20:08 |只看该作者
unbutun 发表于 2011-12-21 20:06
ctags可以找到函数,但是如何在函数后面加东西呢?

我提供的只是一个思路,接下去如何使用就要你自己想办法了啊.
分析一下ctags生成的tags的格式,应该不难解决

论坛徽章:
0
27 [报告]
发表于 2011-12-21 20:25 |只看该作者
ctags可以找到function找到函数头,但是没法定位到函数尾的,因为tags文件下一行不一定是和这个函数紧挨着的

所以好像不行,可以用ctags来减少查找
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP