我有一个名为headers
的数组。
echo ${headers[@]}
返回A B C D
。
我想从文本文件的第一行中搜索每个元素,并返回其所在的列号。
示例输入文件可能是这样
T A Z R B E C D
10 1 5 0 5 88 0 8
20 8 2 10 2 10 1 45
30 2 33 11 8 25 2 40
40 7 0 1 1 87 3 96
我在该数组的元素上进行了循环,并尝试将其输入到gawk中。但是不知何故,它不是在数组中搜索那些元素。
这是我的摘录
for ii in ${headers[@]}
do
echo $ii
gawk -vtoken="$ii" -F $'\t' '
/$token/{ # This is the line where I tried to feed the element of the header array.
for(f=1;f<=NF;f++){
hdr=$f
colhdr[f]=hdr
if(index(hdr,"$token"))wanted[f]=1
}
} ' inputfile.txt
done
答案 0 :(得分:1)
这是您要做什么吗?
$ cat tst.awk
NR==1 {
split(headers,tmp)
for (i in tmp) {
hdrs[tmp[i]]
}
for (i=1; i<=NF; i++) {
if ($i in hdrs) {
print $i "=" i
}
}
exit
}
$ headers=(A B C D)
$ awk -v headers="${headers[*]}" -f tst.awk file
A=2
B=5
C=7
D=8