Linux排序的目标加上它上面和下面的行

时间:2015-11-06 19:33:35

标签: linux sorting date logging grep

我有一个输出文件,通过点击数千个日志文件,然后根据“访客”帐户的成功登录对它们进行排序和重复数据删除(sort,uniq)。

我正在试图找出一种基于日期对条目进行排序的方法,同时保持上面的4行和下面的1行(条目之间的所有内容“ - + - + - ”)。例如:

  

- + - + -

     

会话线程387746 for Windows帐户'DATASERVER \ guest'来自116.111.145.182:51007:     使用登录方法'password'的用户名'guest'登录尝试1成功。

     

000051568433 2015-07-04 02:24:19.324083 UTC WinSSHD 5.23 [060]信息

     

- + - + -

     

会话线程417661 for Windows帐户'DATASERVER \ guest'来自168.1.107.236:61972:     使用登录方法'password'的用户名'guest'登录尝试1成功。

     <00> 000050566540 2015-09-28 12:29:31.424072 UTC WinSSHD 5.23 [060]信息

     

- + - + -

     

会话线程9807 for Windows帐户'DATASERVER \ guest'来自36.80.132.130:49683:     使用登录方法'password'的用户名'guest'登录尝试1成功。

     

000037599714 2014-12-04 18:39:15.269782 UTC WinSSHD 5.23 [060]信息

     

- + - + -

     

会话线程1697 for Windows帐户'DATASERVER \ guest'来自119.147.251.150:48215:     使用登录方法'password'的用户名'guest'登录尝试1成功。

     

000000230681 2013-11-21 11:23:52.165653 UTC WinSSHD 5.23 [049]信息

     

- + - + -

是否可以根据YYYY-DD-MM HH:MM:SS.micro对它们进行排序,同时将每个条目的所有6行作为一个整体保存在一起并重新排序整个文件?感谢。

1 个答案:

答案 0 :(得分:1)

感谢上周回答此问题的人(现在回复显示已删除)。

在回答完你的答案之后,这是一个有效的解决方案(好吧,对我来说足够接近,因为我并不关心HH:MM:DD部分日志条目之后的微秒。

grep -Po ".*(?=UTC)" Filename.txt | sort -k 2,2 | xargs -I {} grep -B4 -A1 '{}' Filename.txt