免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4681 | 回复: 11
打印 上一主题 下一主题

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-20 18:07 |只看该作者 |倒序浏览
如题.

有时对输出顺序有要求只好手工指定一个数字下标,

可是AWK数组的内置FOR不能按照元素加入次序输出么?

高手解答!先谢过

论坛徽章:
0
2 [报告]
发表于 2004-07-21 01:04 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

举个例子

论坛徽章:
0
3 [报告]
发表于 2004-07-21 01:28 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

随便捏一个:
  1. 44P.midtst:/midtst/tmp > awk 'BEGIN{ar[1]=1;ar[2]=2;ar[3]=3;ar[4]=4;for(i in ar)print ar[i]}'
  2. 2
  3. 3
  4. 4
  5. 1
复制代码


每次都是2341  好象是按内存分配顺序输出的.有没有办法控制

论坛徽章:
0
4 [报告]
发表于 2004-07-21 01:33 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

加一个sort
awk 'BEGIN{ar[1]=1;ar[2]=2;ar[3]=3;ar[4]=4;for(i in ar)print ar|"sort"}'
ps:我每次都是
4
1
2
3
加了sort,后就变成
1
2
3
4
是这样的意思么

论坛徽章:
0
5 [报告]
发表于 2004-07-21 01:43 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

可是这样呢?输出两次时就混在一起SORT,不是预期结果:

  1. 44P.midtst:/midtst/tmp > awk 'BEGIN{ar[1]=1;ar[2]=2;ar[3]=3;ar[4]=4;for(i in ar)print ar[i] | "sort";for(i in ar)print ar[i]|"sort"}'
  2. 1
  3. 1
  4. 2
  5. 2
  6. 3
  7. 3
  8. 4
  9. 4
复制代码

论坛徽章:
0
6 [报告]
发表于 2004-07-21 01:47 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

天,试出来了,这样能分开,加了一个close("sort":
  1. awk 'BEGIN{ar[1]=1;ar[2]=2;ar[3]=3;ar[4]=4;for(i in ar)print ar[i] | "sort";close("sort");for(i in ar)print ar[i]|"sort"}'
复制代码


可是这也只能算排序了不算控制啊,如果我上面的元素赋值不是按顺序的,想按赋值输出,SORT就不行

论坛徽章:
0
7 [报告]
发表于 2004-07-21 01:49 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

什么效果? 这样?

  1. 1 1
  2. 2 2
  3. 3 3
  4. 4 4
复制代码

论坛徽章:
0
8 [报告]
发表于 2004-07-21 01:52 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

加CLOSE前是这样的
1
1
2
2
3
3
4
4

我想的控制是如果这样赋值:
  1. ar[China]=13;ar[INDIA]=7;ar[USA]=2;ar.......
复制代码

输出时也按这个顺序

论坛徽章:
0
9 [报告]
发表于 2004-07-21 01:54 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

原帖由 "Mercury_cn" 发表:

可是这也只能算排序了不算控制啊,如果我上面的元素赋值不是按顺序的,想按赋值输出,SORT就不行

看了看close,原来他用于关闭管道用的

论坛徽章:
0
10 [报告]
发表于 2004-07-21 01:58 |只看该作者

困扰很久的问题:怎样能解决用FOR输出AWK数组时的乱序问题?

不只是管道还有流.我只所以试CLOSE是因为以前写过需要重新GETLINE一个已经打开的文件时先CLOSE一次,所以瞎试了一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP