awk打印最后一行文件失败

时间:2017-12-12 07:56:59

标签: shell awk

$cat file
1
2
3
4
5
6
7
8
9
0

我想打印最后一行的值。

$awk '{print $NR}' file
1

为什么输出不是0?

2 个答案:

答案 0 :(得分:3)

与sed不同,awk没有办法指定最后一行。解决方法是:

$ awk '{line=$0} END{print line}' file
0

讨论

让我们看看你的命令,看看它究竟做了什么。考虑一下这个测试文件:

$ cat testfile
a b  c
A B  C
i ii iii

现在,让我们运行你的命令:

$ awk '{print $NR}' testfile
a
B
iii

如您所见,print $NR打印对角线。换句话说,在行号NR上,它会打印字段编号NR。因此,在第一行NR=1上,命令print $NR打印第一个字段。在第二行NR=2上,命令print $NR打印第二个字段。等等。

答案 1 :(得分:2)

使用以下代码,它将打印任何Input_file的最后一行。这里END部分是开箱即用的awk关键字,用于在主要部分之后执行命令/语句。所以我只是在END部分打印行,这将打印最后一行。

awk 'END{print $0}'  Input_file

OR

awk 'END{print}'  Input_file