Bash 在for循环中打印带有awk的列

Bash 在for循环中打印带有awk的列,bash,for-loop,awk,Bash,For Loop,Awk,我想在for循环中打印$2。我尝试了以下方法 for i in {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21}; do awk '{ print $${i} }' COLVAR >tmp_${i} done 它给出了语法错误。我还尝试了${${I}},但仍然存在语法错误。我不确定出了什么问题 $ cat file a b c d e 要在awk中使用shell变量,请使用-v: $ for i in 2 3 4; do awk -v

我想
在for循环中打印$2
。我尝试了以下方法

for i in {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21}; do
awk '{ print $${i} }' COLVAR >tmp_${i}
done
它给出了语法错误。我还尝试了
${${I}}
,但仍然存在语法错误。我不确定出了什么问题

$ cat file
a b c d e
要在awk中使用shell变量,请使用
-v

$ for i in 2 3 4; do awk -v i=$i '{ print $i }' file; done
b
c
d
通常最好是完全在awk中执行类似操作:

$ awk 'BEGIN { split("2 3 4", a) } { for (i in a) print $i }' file
a
b
c

当你可以使用
awk
时,在shell中有一个循环来打印
awk
中的列,这是一个非常糟糕的设计。很抱歉,我是一个新手,正在努力学习。请容忍我