免费注册 查看新帖 |

Chinaunix

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

awk 递归支持的如何? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-01-19 11:12 |只看该作者
原帖由 awk就是awp加ak 于 2007-1-19 11:08 发表
噢,这样声明会有效果:
for (local i; i < ....
我再试试看



child也要...哈

不过实话是...awk函数真蹩脚......
我就是看了你的模拟多维数组...头都大了...

论坛徽章:
0
12 [报告]
发表于 2007-01-19 11:21 |只看该作者
原帖由 awk就是awp加ak 于 2007-1-19 11:08 发表
噢,这样声明会有效果:
for (local i; i < ....
我再试试看

这样写在我这里没进递归。

GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.

论坛徽章:
0
13 [报告]
发表于 2007-01-19 11:23 |只看该作者
原帖由 一梦如是 于 2007-1-19 11:21 发表

这样写在我这里没进递归。

GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.


child也要定义成local的....

论坛徽章:
0
14 [报告]
发表于 2007-01-19 11:25 |只看该作者
to 梦:
如果我在前面
local i;
然后 for (i=0; ... 也不行,递归还是死掉

to Eden:
child 也声明了,还没好使

目前问题还没解决,看到一点儿希望了

论坛徽章:
0
15 [报告]
发表于 2007-01-19 11:31 |只看该作者
这样弄还死循环?
不要用local, awk就通过这个形势制定局部的吧....>_<吃饭了

  1. function listChilds(pPid,     i, child){

  2.         print "listing ... " pPid ", " childs[pPid, 0];
  3.         if (childs[pPid, 0]) for (i = 0; i < childCount[pPid]; i++){

  4.                 child = childs[pPid, i];
  5.                 print pPid": " child;
  6.                 print "--listChilds(" child ")";
  7.                 listChilds(child);
  8.         }
  9. }

  10. NR > 1 { childs[$3, childCount[$3]++] = $2; }
  11. END {
  12.         listChilds(pid);
  13. }
  14. ' pid=1
复制代码


  1. GNU Awk 3.1.3
  2. Copyright (C) 1989, 1991-2003 Free Software Foundation.
复制代码

评分

参与人数 1可用积分 +2 收起 理由
r2007 + 2 方法巧妙

查看全部评分

论坛徽章:
0
16 [报告]
发表于 2007-01-19 11:32 |只看该作者
不死,这样的结果是正常的,哈哈

论坛徽章:
0
17 [报告]
发表于 2007-01-19 11:34 |只看该作者
原帖由 Edengundam 于 2007-1-19 11:31 发表
这样弄还死循环?
不要用local, awk就通过这个形势制定局部的吧....>_<吃饭了
[code]
function listChilds(pPid,     i, child){

        print "listing ... " pPid ", " childs ...

谢谢 Eden!终于找到解决方法了,看来用 local 也不中啊

论坛徽章:
0
18 [报告]
发表于 2007-01-19 11:40 |只看该作者
结论:
请大家awk函数递归的时候,注意局部变量!!!
如果有问题可以考虑通过参数栈来保存(再次感谢Eden的发现)。


如果有更美观直接的方法,请不吝告诉我一声 ^_^

论坛徽章:
0
19 [报告]
发表于 2007-01-19 11:56 |只看该作者
如果i为全局变量,程序肯定不对,不过不一定会表现不对,幸好这个错误出现的比较频繁,否则很难调试。
经常编写内核程序会出现,程序运行了几个月才出现了一次错误,而且此错误还几乎不可重现,上次我们实验室
有个bug调了半年多,才解决。

论坛徽章:
0
20 [报告]
发表于 2007-01-19 12:23 |只看该作者
原帖由 awk就是awp加ak 于 2007-1-19 11:40 发表
结论:
请大家awk函数递归的时候,注意局部变量!!!
如果有问题可以考虑通过参数栈来保存(再次感谢Eden的发现)。


如果有更美观直接的方法,请不吝告诉我一声 ^_^



sed & awk上说了这个问题^_^

man 里面也是用这种形式定义的~~~

不过这个local哪里有说明...没有看到- -#
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP