Chinaunix

标题: 能否将shell中的关联数组传入awk? [打印本页]

作者: 闸北陆小洪    时间: 2012-08-15 19:50
标题: 能否将shell中的关联数组传入awk?
加入shell中有关联数组:

refers=([b]="baidu" [g]="google" [s]="soso")

怎样将$refers传入awk中?
作者: seesea2517    时间: 2012-08-16 10:17
其实,shell 里没有关联数组……

awk 中引用 shell 的变量有很多的讨论了,不赘述。
作者: rdcwayx    时间: 2012-08-16 10:25
  1. declare -A refers
  2. refers=([b]="baidu" [g]="google" [s]="soso")

  3. awk -v s1="${refers[*]}" -v s2="${!refers[*]}" 'BEGIN{split(s1,s3," ");split(s2,s4," ");for (i=1;i<=length(s4);i++) refers[s4[i]]=s3[i]; print refers["b"],refers["g"],refers["s"]}'
复制代码

作者: 闸北陆小洪    时间: 2012-08-16 11:00
本帖最后由 闸北陆小洪 于 2012-08-16 11:01 编辑

回复 3# rdcwayx

追问一下
  1. s2="${!refers[*]}"
复制代码
是啥意思?


   
作者: personball    时间: 2012-08-16 11:06
回复 2# seesea2517


    bash 版本4以上已经支持关联数组了
对于lz的问题。。。感觉不能直接使用吧,
如果要在awk中重新构造,还是相当不方便的感觉
作者: rdcwayx    时间: 2012-08-16 11:13
本帖最后由 rdcwayx 于 2012-08-16 13:15 编辑
闸北陆小洪 发表于 2012-08-16 13:00
回复 3# rdcwayx

追问一下是啥意思?

输出该关联数组的所有下标
作者: seesea2517    时间: 2012-08-16 18:03
personball 发表于 2012-08-16 11:06
回复 2# seesea2517


是这样啊,我太落后了……
  1. [seesea@UC ~]$ bash --version
  2. GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
  3. Copyright (C) 2005 Free Software Foundation, Inc.
复制代码

作者: 闸北陆小洪    时间: 2012-08-17 11:51
回复 6# rdcwayx


多谢啊


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2