在AWK语句内部和外部使用Array

时间:2014-07-11 17:50:00

标签: arrays bash shell awk

我希望将来自用户的输入存储在AWK语句中的数组中,然后在AWK语句之外显示该数组的元素。 问题是我无法在AWK之外显示数组元素 这是代码:

declare -a data
awk -F" " ' 
BEGIN{
cmd="read a; echo $a"
}
{
        i=1;
        NR==1;
        while(i<=NF)
        {
        print $i
        printf "Please Enter " $i ":  "
        cmd|getline input
        close(cmd)
        **data[$i]=input**
        print data[$i] 
        print  $i,NF 
        i++
        }
}
' basic_data

#Here I want to display array elements but i get nothing:

echo  ${data[@]}

感谢您的支持 在此先感谢:)

2 个答案:

答案 0 :(得分:1)

要将变量的值传递到awk,您可以使用-v开关将其分配给awk变量。要将数据从awk接收回变量,可以使用命令替换。

$ a=aaa
$ b=($(awk -va="$a" 'BEGIN{for(i=1;i<=3;i++) {printf("%s%d\n", a, i)}}'))
$ for x in "${b[@]}"; do echo "$x"; done
aaa1
aaa2
aaa3

答案 1 :(得分:1)

你可以这样做:

array=($(awk 'BEGIN{print "first";print "second"}')) 

echo ${array[0]}
first
echo ${array[1]}
second

但我不确定这是不是你的意思。