【发布时间】:2015-09-01 02:50:31
【问题描述】:
我有一个类似的 bash 数组
myarray = (1 2 3 4 5 ... n)
另外我正在读取一个只有一行输入的文件,例如:
1 2 3 4 5 ... n
我正在将它逐行读取到一个数组中并打印:
awk 'BEGIN{FS=OFS="\t"}
NR>=1{for (i=1;i<=NF;i++) a[i]+=$i}
END{for (i=1;i<NF;i++) print OFS a[i]}' myfile.txt
myarray 的大小与a 相同。现在myarray 以索引0 开始,a 以索引1 开始。我的主要问题是如何将 bash 数组传递给我的 awk 表达式,以便我可以在打印循环中使用它和相应的元素。所以我尝试的是这样的:
awk -v array="${myarray[*]}"
'BEGIN{FS=OFS="\t"}
NR>=1{for (i=1;i<=NF;i++) a[i]+=$i}
END{for (i=1;i<NF;i++) print OFS a[i] OFS array[i-1]}' myfile.txt
但这不起作用。我没有得到myarray 的任何输出。在这个例子中我想要的输出是:
1 1
2 2
3 3
4 4
5 5
...
n n
【问题讨论】: