免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2482 | 回复: 15

awk初级问题,请教各位大牛 [复制链接]

论坛徽章:
0
发表于 2012-03-02 19:48 |显示全部楼层
本帖最后由 unbutun 于 2012-03-02 20:14 编辑

awk -f xxx.awk filexxx


filexxx文件中的内容:
./init/main.c : int test_awk\(a\, b\)




main.c内容

int a()
{
}

int b()
{
}

int test_awk(a, b)
{
    printf(""xxxxxx\n");
    if(a == 1) {
    } else {
        b = 5;
    }
}




期望效果:
int a()
{
}

int b()
{
}

int test_awk(a, b)
{
    printf(""xxxxxx\n");
    if(a == 1) {
    } else {
        b = 5;
    }
}

int test_awk__aaaa(a, b);


xxx.awk
代码疑问:
BEGIN {
      FS=":"
      found=0
      search=0
      n=0
}
{
           symbol["file"]=$1
           symbol["pattern"]=$2
           while("cat "symbol["file"]"" | getline) {

                if(search == 1) {
                        
                         if(match($0,/{/)) {
                               n=1
                               n++
                         } else {
                               n--
                         }
                }

                if(n ==  1) {
                          将1处存下来的东西,做下修改追加到函数尾部
                }
                if(match($0, /symbol["pattern"]/)) { 1: --------- 这个地如果想要用symbol["pattern"]里的字符串来匹配,应该怎么写?
                           print $0
                           found=1
                }
                if(found == 1) {
                          if(match($0, /)/)) {
                                  2: 此处想要将前面从found=1时到匹配了),之间的内容存在变量或文件里,不知应该怎么做?

                                    search=1
                          }
               
                }
   
           }
}

多谢

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
发表于 2012-03-02 20:37 |显示全部楼层
貌似看懂一个问题
可以这样 match($0, symbol["pattern"])

论坛徽章:
0
发表于 2012-03-02 20:40 |显示全部楼层
回复 2# ziyunfei

早试过了,不行


   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2012-03-02 20:54 |显示全部楼层
头晕,明天去检查血糖。

论坛徽章:
0
发表于 2012-03-02 21:02 |显示全部楼层
坐等大牛

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
发表于 2012-03-02 21:14 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-03-02 21:16 |显示全部楼层
回复 6# zooyo


    那就麻烦斑竹大人,帮忙看看吧,都是很简单的问题,我才用awk,还没入门,对你们来说,这问题就是小菜

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
发表于 2012-03-02 21:26 |显示全部楼层
lz直接说需求吧。。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
发表于 2012-03-02 21:29 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-03-02 21:35 |显示全部楼层
回复 9# zooyo


    好的

问题1:
match($0, /symbol["pattern"]/) --- sybmol["pattern"]是从文件中读出的,想用来和$0 match,要怎么弄,试了下如果直接将symbol["pattern"]换成文件里的那个内容可以匹配,print symbol["pattern"] 也正常,但放到match里就不行


问题2:
想在awk里将读入的几行存到一个文件或变量里要怎么弄?


多谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP