最后一个awk nth元素

neo*_*orc 0 shell awk

我试图在UNIX shell中获得第n个元素,"第n个元素"存储在变量中.

我尝试了以下awk,但没有一个工作.

awk '{print $NF-$minus_day}'
awk '{print $(NF-$minus_day)}'
awk '{print $(NF-minus_day)}'
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 5

你不能直接使用bash变量awk,你必须通过以下方式传递-v:

awk -v minus=$minus_day '{print $(NF-minus)}' file
    ^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

要么

awk '{print $(NF-minus)}' minus=$minus_day file
                          ^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

对于给定的输入文件:

$ cat file
one 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)

它会回来

$ 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
Run Code Online (Sandbox Code Playgroud)