awk怎么截取倒数第二行的数据

我有这么一组数据:

我现在想用awk截取倒数第二行的倒数第一个域的数据,也就是3.7593112576e+10。

我尝试过这样:awk '$NR {print $(NF-1)}',但是不行,得到的结果不对

这该怎么搞,求高手帮忙。。。

1、首先要检查AWK是不是已经安装了,一般来说这个是系统内置的命令,直接a TAB键看看能否补全。

2、rpm查询,通过rpm -qa|grep awk 检查。

3、如果没有安装awk,通过yum 或 apt安装。

4、通过awk --help查看帮助,可以看到awk的使用方法。

5、awk获取文件最后两行,awk '{print}' /etc/passwd |tail -n 2。

6、获取文件最后一行  awk 'END{print}' /etc/passwd。

7、其实通过awk来获取太麻烦了,直接用tail -n 就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
awk '{
res = cur;
cur = $(NF-1)
} END{
print res
}' $filename

打印倒数第二行的第二列,是没有问题的。
你说出现报错,可能是你的数据集中有某些行只有一列,导致通过NF-1去找第-1列当然就失败了。
你可以这样处理下容错:
awk '
{
if (NF >=2 ) {

res = cur;
cur = $(NF-1)
}
} END{
print res
}' $filename本回答被提问者采纳
第2个回答  2013-03-22
awk -v RS="" '{print $(NF-3)}' file
第3个回答  2021-12-18

awk '

BEGIN{skip_row=2}

{items[NR]=$0}

END{

for(i=1;i<=NR-skip_row;i++)

    {print items[i]}

}'


我是故意分开让你容易看懂的

awk 'BEGIN{skip_row=2}{items[NR]=$0}END{for(i=1;i<=NR-skip_row;i++){print items[i]}}'

第4个回答  2013-03-21
awk '{res = cur; cur = $NF} END{print res}'追问

取到数据了,我还想要倒数第二行倒数第二列的怎么搞啊?
我试了下:awk '{res = cur; cur = $(NF-1)} END{print res}'报错了。$NF不是指最后一列吗?减1就是倒数第二列吧?你上面那句的行数是在哪定义的啊?我最后一列的数据每一行都一样,取到的数据是不是倒数第二行的我就看不出来了,我想拿到倒数第二行倒数第二列的数据看看,也就是:3.9545870746e+09。这个数据和上面的不一样。求高手再给解答下。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网