我有这么一组数据:
我现在想用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 就可以了。
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本回答被提问者采纳
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]}}'
取到数据了,我还想要倒数第二行倒数第二列的怎么搞啊?
我试了下:awk '{res = cur; cur = $(NF-1)} END{print res}'报错了。$NF不是指最后一列吗?减1就是倒数第二列吧?你上面那句的行数是在哪定义的啊?我最后一列的数据每一行都一样,取到的数据是不是倒数第二行的我就看不出来了,我想拿到倒数第二行倒数第二列的数据看看,也就是:3.9545870746e+09。这个数据和上面的不一样。求高手再给解答下。