我在数组上有一个for循环。我目前一直在寻找11美元的领域。但是,现在我想做的是每次检查一个不同的字段。
i
是第一个元素时,我想查看$11
字段。i
是第二个元素时,我想查看$12
字段。i
是第三个时,我想查看$13
字段。我目前正在使用:
for i in "${array[@]}"
do
awk -v OFS="\t" -v str1="$i" -v thr="$THR" '{ if($11>=thr) print "chr" $1, $2 ,$3 , str1 ;}' comb.txt > $i".bed"
done
我该怎么做?
我的变量如下:
STR1="CD45RA+_naive"
STR2="CD45RO+_mem"
STR3="CD127-_Treg"
STR4="IL17-_Th_stim_MACS"
STR5="IL17+_Th17_stim"
array=($STR1 $STR2 $STR3 $STR4 $STR5)
THR=10
答案 0 :(得分:2)
给定数组names
,您可以通过执行以下操作来遍历其值并了解索引:
for ((i=0; i<${#names[@]}; i++))
do
echo "$i, ${names[$i]}"
done
例如,
$ names=('a' 'b' 'c')
$ for ((i=0; i<${#names[@]}; i++)); do echo "$i, ${names[$i]}"; done
0, a
1, b
2, c
根据这个逻辑,你可以说:
for ((i=0; i<${#array[@]}; i++))
do
awk -v index="$i" -v str1="${names[$i]}" -v thr=$THR '{ if($(index+11)=>thr) ... }' comb.txt
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
done
也就是说,您将索引$ i作为index
提供给awk,将值${names[$i]}
提供为str
。然后,在awk代码中,您可以使用索引值,通过说index + 10
或者您需要对该数字执行的操作。