如何使用awk打印文件的最后一条记录?

时间:2011-01-17 11:13:47

标签: unix

如何使用awk打印文件的最后一条记录?

2 个答案:

答案 0 :(得分:2)

类似的东西:

awk '{ prev_line=this_line; this_line=$0 } END { print prev_line }' < file

基本上,在当前行之前记录该行,直到您到达文件末尾,然后打印上一行。

编辑以回复评论:

只提取倒数第​​二行中的第二个字段:

awk '{ prev_f2=this_f2; this_f2=$2 } END { print prev_f2 }' < file

答案 1 :(得分:1)

您可以使用awk执行此操作,但您可能会发现:

tail -2 inputfile | head -1

将是一个更快的解决方案 - 它抓住整套的最后两行,然后是这两行中的第一行。

以下文字说明了这是如何运作的:

pax$ echo '1
> 2
> 3
> 4
> 5' | tail -2 | head -1
4

如果必须使用awk,您可以使用:

pax$ echo '1
2
3
4
5' | awk '{last = this; this = $0} END {print last}'
4

它的工作原理是将最后一行和当前行保留在变量lastthis中,并在文件结束时打印出last