如何对具有多行的文本文件重复使用tail命令?

时间:2014-02-07 17:26:02

标签: linux scripting

我最近一直在阅读关于tail命令的很多内容,我不能说我找到了解决问题的方法。我有一个名为log.txt的文本文件,它包含3行:

  

vm2014-09经典转发:Mla-site   12828034:3021:1298320 0000001110000000000 11/25/2013 2:24

     

vm2014-10申请转发:Spc-site   238567034:3021:1298320 0000001110000000000 11/25/2013 3:54

     

vm2014-11 Classic Forwarded:Mla-site   12828034:3021:1298320 0000001110000000000 11/25/2013 4:49

我想得到最后一部分 现在我有了这段代码

tail -c 17 log.txt

它显然会返回 11/25/2013 4:49 ,这是文件的最后一行。我想知道如何让它归还:

2013/11/25 2:24

2013年11月25日3:54

2013年11月25日4:49

谢谢!

2 个答案:

答案 0 :(得分:1)

从您的问题中不清楚您的log.txt文件是否具有固定结构。如果是这样,我就不会使用tail,而是使用它:

cat log.txt | sed '/^\s*$/d' | awk '{print $(NF-1)" "$NF}'

sed删除空白行,awk返回最后两个以空格分隔的字段。我得到了

11/25/2013 2:24
11/25/2013 3:54
11/25/2013 4:49

答案 1 :(得分:0)

您还有cut

tail log.txt | cut -d ' ' -f 7,8

字段7和8分别是日期和时间。正如@JayInNyc也建议的那样,这只适用于给定的样本行。具有不同格式的行会产生意外结果。