免费注册 查看新帖 |

Chinaunix

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

问一个关于awk数组的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-08 17:47 |只看该作者 |倒序浏览
能否实现像这样的功能:
定义数组:array[1="aa"]="var1",array[2="bb"]="var2",array[3="cc"]="var3"...
然后通过for循环:
i=0;
for(item in array){
   array[i]....    //通过数字下标可以取得数组元素的值,例如array[1],取得值"var1"
   array[item]... //通过字符串下标也可以取得数组元素的值,例如array["aa"],取得值"var1"
   i++;
}

awk数组有这种特性吗?同时具有数字下标和字符串下标。

论坛徽章:
0
2 [报告]
发表于 2010-07-08 17:53 |只看该作者
a[1]=var1
a["aa"]=var1

论坛徽章:
0
3 [报告]
发表于 2010-07-08 18:26 |只看该作者
直接用关联数组呗。。。还要数字下标干嘛?

论坛徽章:
0
4 [报告]
发表于 2010-07-09 10:07 |只看该作者
直接用关联数组呗。。。还要数字下标干嘛?
jerry017cn 发表于 2010-07-08 18:26


因为要以数字和字符串同时迭代数组。用array[1,"aa"]="var1"这种方式似乎可以。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2010-07-09 10:13 |只看该作者
回复 4# dickgz1z


我怎么感觉不可以呢,能否说说你是咋实现的?

论坛徽章:
0
6 [报告]
发表于 2010-07-09 11:44 |只看该作者
回复  dickgz1z


我怎么感觉不可以呢,能否说说你是咋实现的?
Shell_HAT 发表于 2010-07-09 10:13
  1. awk 'BEGIN{
  2.   array[1,"aa"]="var1";
  3.   array[2,"bb"]="var2";
  4.   array[3,"cc"]="var3";

  5.   asort(array,array2);  //将array按照value排序,存入array2。存入后array2的key值为1,2,3,value值为var1,var2,var3。
  6.   asorti(array,array3); //将array按照key排序,存入array3。存入后array3的key值为1,2,3,value值为1aa,2bb,3cc。

  7.   for(i=1;i<4;i++){
  8.    print array2[i];
  9.   }

  10.   for(item in array3){
  11.    split(array3[item],k,SUBSEP);
  12.    print array[k[1],k[2]];
  13.   }
  14. }' test
复制代码
输出:
var1
var2
var3
var1
var2
var3

论坛徽章:
0
7 [报告]
发表于 2010-07-09 21:51 |只看该作者
a[1]="aa"
b["aa"]=var1

b[a[1]]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP