在 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))
也有效)