如何引用用任意表达式定义的 awk 字段?

如何引用用任意表达式定义的 awk 字段?

在 shell 脚本中,我们有${name}显式指定变量名并将其与周围文本分开的结构。

在 中awk,我可以用 来引用第五个字段,$5或者用 来引用变量 N 所指向的第 N 个字段$N

如果我想引用第N+1个字段怎么办?如果我使用的话,$N+1我会得到第 N 个字段的内容加 1,这不是我想要的。

我可以设置另一个变量temp = N+1,然后引用$temp,但是没有一种方法可以一次性指定“Nth plus 1”字段吗?

或者,就此而言,我可以引用函数返回 N 的第 N 个字段吗?

答案1

只需用括号将数字括起来:

$ echo 1 3 5 7 | awk '{print $(1+3)}'
7

如果您想使用某些函数计算字段编号,则根本不需要括号:

$ echo 1 3 5 7 | awk '{print $sqrt(16)}'
7

(当然它们不会伤害,所以$(sqrt(16))也有效)

相关内容