【问题标题】:Print a column with awk inside a for loop [duplicate]在for循环中打印带有awk的列[重复]
【发布时间】:2018-04-28 03:45:56
【问题描述】:

我想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}},但仍然是语法错误。我不确定出了什么问题。

【问题讨论】:

  • 当你可以使用 awk 本身时,在 shell 中有一个循环来打印 awk 中的列,这是非常糟糕的设计
  • 对不起,我是新手,正在努力学习。请多多包涵

标签: bash for-loop awk


【解决方案1】:
$ 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

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 2020-05-01
    • 2018-02-04
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2013-03-28
    • 2015-12-29
    • 2020-11-07
    相关资源
    最近更新 更多