Arrays 使用数组内部和外部AWK语句
我希望将来自用户的输入存储在AWK语句内部的数组中,然后在AWK语句外部显示该数组的元素。 问题是我不能在AWK之外显示数组元素 代码如下:Arrays 使用数组内部和外部AWK语句,arrays,bash,shell,awk,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 ":
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[@]}
declare-a数据
awk-F“
开始{
cmd=“读取a;回显$a”
}
{
i=1;
NR==1;
当(i将变量的值传递到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
$a=aaa
$b=($(awk-va=“$a””开始{for(i=1;i您可以这样做:
array=($(awk 'BEGIN{print "first";print "second"}'))
echo ${array[0]}
first
echo ${array[1]}
second
但我不确定你的意思是否是这样。Bash和awk是不同的进程。它们不可能访问和修改彼此的数据。basic_data
中有什么内容?看起来你对shell和awk的用途非常困惑,因为你试图将awk用于shell应该用于的东西,然后尝试弹出在awk脚本中创建shell数据结构。如果您通过示例输入/输出告诉我们您要做的事情会更好,这样我们就可以为您指出正确的方向。亲爱的,我要做的是让用户根据“基本数据”中存储的字段插入数据例如,基本数据文件中存储的数据是Id和名称,因此我使用条件为“NR=1”的AWK来获取字段,然后让用户根据字段插入数据并将其存储在数组中,以便我可以对其进行一些验证。希望现在我们在同一页:)……谢谢