我希望print $2
在for循环中。我尝试了以下
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}}
,但仍然是语法错误。我不确定是什么问题。
答案 0 :(得分:0)
$ 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