我试图在UNIX shell中获得第n个元素,"第n个元素"存储在变量中。
我尝试了以下方法,但没有一个能奏效。
awk '{print $NF-$minus_day}'
awk '{print $(NF-$minus_day)}'
awk '{print $(NF-minus_day)}'
答案 0 :(得分:5)
您无法在awk
中直接使用bash变量,您必须使用-v
传递它:
awk -v minus=$minus_day '{print $(NF-minus)}' file
^^^^^^^^^^^^^^^^^^^
或
awk '{print $(NF-minus)}' minus=$minus_day file
^^^^^^^^^^^^^^^^
对于给定的输入文件:
$ cat file
one 2 3 4 5 6 7 8 9 10 11 12 13 14 15
它将返回
$ minus_day=3
$ awk -v minus=$minus_day '{print $(NF-minus)}' file
12
$ minus_day=4
$ awk -v minus=$minus_day '{print $(NF-minus)}' file
11