Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell awk上一个元素之前的第n个元素_Shell_Awk - Fatal编程技术网

Shell awk上一个元素之前的第n个元素

Shell awk上一个元素之前的第n个元素,shell,awk,Shell,Awk,在UNIX shell中,我试图在最后一个元素之前获取第n个元素,“第n个元素”存储在一个变量中 我尝试了以下几项,但都不起作用 awk '{print $NF-$minus_day}' awk '{print $(NF-$minus_day)}' awk '{print $(NF-minus_day)}' 不能在awk中直接使用bash变量,必须使用-v传递它: awk -v minus=$minus_day '{print $(NF-minus)}' file ^^^^^^^^^^

在UNIX shell中,我试图在最后一个元素之前获取第n个元素,“第n个元素”存储在一个变量中

我尝试了以下几项,但都不起作用

awk '{print $NF-$minus_day}'
awk '{print $(NF-$minus_day)}'
awk '{print $(NF-minus_day)}'

不能在
awk
中直接使用bash变量,必须使用
-v
传递它:

awk -v minus=$minus_day '{print $(NF-minus)}' 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

不能在
awk
中直接使用bash变量,必须使用
-v
传递它:

awk -v minus=$minus_day '{print $(NF-minus)}' 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

什么是$NF和$减_天?你能举例说明一下你在awk的输入中有什么吗?@JeffT。NF是一个内置的awk变量。@Barmar当然,我在想什么?;)什么是$NF和$减_天?你能举例说明一下你在awk的输入中有什么吗?@JeffT。NF是一个内置的awk变量。@Barmar当然,我在想什么?;)“必须通过”有点强,因为还有其他选择
awk'{print$(NF-m)}'m=$减日文件
在没有
-v
的情况下工作得很好。公平地说,我已经重写了这个句子以使其更有意义。谢谢,@williampersell!您也可以在有限的情况下使用双引号:
awk“{print\$(NF-$减日)}”文件
。它确实有效。非常感谢您的回复。“必须通过”有点强,因为还有其他选择
awk'{print$(NF-m)}'m=$减日文件
在没有
-v
的情况下工作得很好。公平地说,我已经重写了这个句子以使其更有意义。谢谢,@williampersell!您也可以在有限的情况下使用双引号:
awk“{print\$(NF-$减日)}”文件
。它确实有效。非常感谢您的回复。