Shell awk打印文件的最后一行失败

Shell awk打印文件的最后一行失败,shell,awk,Shell,Awk,我想打印最后一行的值 $cat file 1 2 3 4 5 6 7 8 9 0 为什么输出不是0 与sed不同,awk没有指定最后一行的方法。解决办法是: $awk '{print $NR}' file 1 讨论 让我们看一下您的命令,看看它实际上做了什么。考虑这个测试文件: $ awk '{line=$0} END{print line}' file 0 现在,让我们运行您的命令: $ cat testfile a b c A B C i ii iii 如您所见,print$NR

我想打印最后一行的值

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

为什么输出不是0

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

$awk '{print $NR}' file
1
讨论 让我们看一下您的命令,看看它实际上做了什么。考虑这个测试文件:

$ awk '{line=$0} END{print line}' file
0
现在,让我们运行您的命令:

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

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

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

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


我明白了,太棒了。
awk 'END{print $0}'  Input_file
awk 'END{print}'  Input_file