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

Wil*_*ard 2 awk

在 shell 脚本中,我们具有${name}明确指定变量名称并将其与周围文本分开的构造。

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

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

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

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

jim*_*mij 5

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

$ echo 1 3 5 7 | awk '{print $(1+3)}'
7
Run Code Online (Sandbox Code Playgroud)

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

$ echo 1 3 5 7 | awk '{print $sqrt(16)}'
7
Run Code Online (Sandbox Code Playgroud)

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