如何在bash中从底部获取第三个值?

如何在bash中从底部获取第三个值?,bash,awk,Bash,Awk,我有一条这样的线 3672975 3672978 3672979 awk'{print$1}'将返回第一个数字3672975 如果我仍然想要第一个数字,但表明它是从底部算起的第三个数字,我应该如何调整awk'{print$-3}' 原因是,我有数百个数字,我总是想从底部获得第三个数字 我可以先使用awk获取项目总数,然后进行减法吗?$NF是最后一个字段,$(NF-1)是最后一个字段之前的字段,因此: $ awk '{print $(NF-2)}' 例如: $ echo 3672975 3672

我有一条这样的线

3672975 3672978 3672979

awk'{print$1}'
将返回第一个数字3672975

如果我仍然想要第一个数字,但表明它是从底部算起的第三个数字,我应该如何调整
awk'{print$-3}'

原因是,我有数百个数字,我总是想从底部获得第三个数字


我可以先使用
awk
获取项目总数,然后进行减法吗?

$NF
是最后一个字段,
$(NF-1)
是最后一个字段之前的字段,因此:

$ awk '{print $(NF-2)}'
例如:

$ echo 3672975 3672978 3672979 | awk '{print $(NF-2)}'
3672975
编辑

$ echo 1 10 100 | awk '{print $(NF-2)}'
1

$NF
是最后一个字段,
$(NF-1)
是最后一个字段之前的字段,等等,因此:

$ awk '{print $(NF-2)}'
例如:

$ echo 3672975 3672978 3672979 | awk '{print $(NF-2)}'
3672975
编辑

$ echo 1 10 100 | awk '{print $(NF-2)}'
1

或使用
cut
rev

echo 1 2 3 4 | rev | cut -d' ' -f 3 | rev
2

或使用
cut
rev

echo 1 2 3 4 | rev | cut -d' ' -f 3 | rev
2

我测试了你的“回声”,它就像你说的那样工作。但是在我的集群上,它仍然是3672977(3672979-2),而不是3672975。你试过吗?请更详细地描述你的集群。您是否正在将打印的
粘贴到现有程序?您正在运行哪种Awk,在哪种环境中运行,以及如何运行?如果
echo
方法起作用,那么其他因素会阻止它在您的环境中工作。我已经向我们的it员工提出了这个问题,等待他们的答复。您的it员工告诉我:我使用的是$NF-2,而不是$(NF-2)。终于找到了!我测试了你的“回声”,它就像你说的那样工作。但是在我的集群上,它仍然是3672977(3672979-2),而不是3672975。你试过吗?请更详细地描述你的集群。您是否正在将打印的
粘贴到现有程序?您正在运行哪种Awk,在哪种环境中运行,以及如何运行?如果
echo
方法起作用,那么其他因素会阻止它在您的环境中工作。我已经向我们的it员工提出了这个问题,等待他们的答复。您的it员工告诉我:我使用的是$NF-2,而不是$(NF-2)。终于找到了!我现在可以使用rev | awk{print$3}| rev谢谢!对不起,我没听到你的回答吗?真的很抱歉。现在使用rev | awk{print$3}对我有效。rev谢谢!对不起,我没听到你的回答吗?真的很抱歉。