【发布时间】:2015-01-16 16:25:21
【问题描述】:
我有一个包含以下块的示例平面文件
test my array which array is better array huh got it?
INDIA USA SA NZ AUS ARG ARM ARZ GER BRA SPN
我还有一个这样定义的数组(ksh_arr2)
ksh_arr2=$(awk '{if(NR==1){for(i=1;i<=NF;i++){if($i~/^arr/){print i}}}}' testUnix.txt)
并包含以下整数
3 5 8
现在我只想解析位于相应编号位置的列值,即第三第五和第八。 我还想要病房第二行的输出。 所以我尝试了以下
awk '{for(i=1;i<=NF;i++){if(NR >=1 && i=${ksh_arr2[i]}) do print$i ; done}}' testUnix.txt
但它显然没有打印所需的输出。 我错过了什么?请帮忙。
【问题讨论】:
-
首先:在 IF 子句中,您为
i变量赋值。 -
我正在与数组索引值进行比较.. 对吗??
-
第二个:
ksh_arr2数组是在哪里定义的? -
没有。
awk中的比较运算符和赋值运算符不同。阅读this link -
awk程序的任何 shell 数组都是未知的。您必须使用-v选项,正如 Jidder 和 John1024 在他们的解决方案中使用的那样。