只打印文件的最后一行?

yae*_*ael 41 shell awk

如何只打印文件的最后一行?

Joe*_*oey 76

END{print}
Run Code Online (Sandbox Code Playgroud)

应该这样做.感谢 Ventero ,他懒得提交这个答案.

  • 我认为最初的问题指定了“awk”,但由于问题变得更加通用,所以这个答案没有任何意义。所以我稍微改进了答案。总的来说,“tail”是一个很好的解决方案,但“awk”可能提供更细致的控制。 (2认同)

gho*_*g74 22

使用正确的工具完成工作.由于您希望获取文件的最后一行,因此tail是适合该作业的工具,特别是如果您有一个大文件.在这种情况下,Tail的文件处理算法更有效.

tail -n 1 file
Run Code Online (Sandbox Code Playgroud)

如果你真的想用awk,

awk 'END{print}' file
Run Code Online (Sandbox Code Playgroud)

编辑:tail -1 file已弃用


Ron*_*onK 13

是否必须使用awk它?为什么不用tail -n 1 myFile

  • @yael完全没有; 对于大文件,`tail -1`将比`awk`更快.我尝试了一个~3m的行文件; 尾巴是瞬间的,而awk花了.44s (6认同)
  • @yael.tail专门用于处理来自"end"的文件.因此,它比awk更快.因为awk从头开始处理文件.算法不同. (2认同)

小智 8

找出文件的最后一行:

  1. 使用 sed(流编辑器): sed -n '$p' fileName

  2. 使用尾巴: tail -1 fileName

  3. 使用 awk: awk 'END { print }' fileName


小智 5

您也可以使用来实现sed。但是,我个人建议使用tailawk

无论如何,如果您想通过做sed,可以通过以下两种方法:

方法1:

sed '$!d' filename
Run Code Online (Sandbox Code Playgroud)

方法2:

sed -n '$p' filename
Run Code Online (Sandbox Code Playgroud)

此处,文件名是具有要分析的数据的文件的名称。