Sorting 对过去两年的电子邮件日志文件进行排序。试图通过用户电子邮件查找唯一的条目
我正在尝试对电子邮件日志文件进行排序。文件的每一行看起来像:Sorting 对过去两年的电子邮件日志文件进行排序。试图通过用户电子邮件查找唯一的条目,sorting,unix,sed,terminal,grep,Sorting,Unix,Sed,Terminal,Grep,我正在尝试对电子邮件日志文件进行排序。文件的每一行看起来像: deliver(jsmith): May 17 >: saved mail to INBOX deliver(bdillon): May 17 >: saved mail to INBOX jsmith和bdillon是电子邮件 基本上我想做的是修剪这个文件,只显示一个jsmith实例。因此,如果jsmith在5月17日发送了多封电子邮件,我将如何删除除一行之外的所有行 我希望对每个电子邮件条目都这样做,因此jsmi
deliver(jsmith): May 17 >: saved mail to INBOX
deliver(bdillon): May 17 >: saved mail to INBOX
jsmith和bdillon是电子邮件
基本上我想做的是修剪这个文件,只显示一个jsmith实例。因此,如果jsmith在5月17日发送了多封电子邮件,我将如何删除除一行之外的所有行
我希望对每个电子邮件条目都这样做,因此jsmith、bdillon、tjones等只有一个条目。因为您现在删除了2014年1月1日之前的所有行。现在,您可以假设电子邮件和日期之间的所有匹配在2014年是唯一的。这样的内容应该足以找到所有唯一的条目
grep -o -P "\w+\((\w|\d)+\):\s+\w+\s+\d+" yourfile | sort | uniq > newfile
注:
- -o意味着只保留grep在那条线上找到的东西
- -p表示使用perl风格的正则表达式。字符串是一个perl
正则表达式匹配for
交付(bdillon)的文本:5月17日
- 排序对行进行排序
- uniq删除重复项
deliver(bdillon): May 17
deliver(jsmith): May 17
如果还需要该消息,请删除grep,只需对该文件进行cat或直接调用sort 你必须向后读取文件,直到你点击Jan 01,否则你永远无法分辨你点击的是哪一个Jan 01。我会在Vim中这样做吗?这是一个相当大的文件。它有4亿行。
0G?01年1月
,基本上。转到文件末尾,然后向后搜索Jan 01。但是你试图在文件上做会计,而vim是一个文本编辑器。那么什么是最好的方法呢?我对终端命令没什么意见,但我还是个新手。有更好的日志记录系统吗?它包括全年?这将简化今后的所有工作。