如何在bash中从底部获取第三个值?
我有一条这样的线 3672975 3672978 3672979如何在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
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谢谢!对不起,我没听到你的回答吗?真的很抱歉。