2016-08-13 72 views
0

我有web应用程序日志的几GB,我需要从客户端提取客户数据(谁didnt保持适当的备份。)查找大的文本文件不连续重复

到目前为止,我已经清理把原木放好一点,我就能看到隧道尽头的灯光。然而,我意识到有很多重复的条目,似乎每次使用本网站客户应用中的相同数据存储在日志中,继承人一个简单的例子:

initial_date=Jul-26-2015&report_center=0&last_name=bar&first_name=foo&sex=M&birthday=Sep-26-1985&sin=123456789&drivers_license=&address1=414+stackoverflow+Street&residence_type=1&address2=Apartment+103&datemovein=Feb-02-2013&postal=a1a1a1&city=townsville&prov=ontario&country=Canada&telephone=5555555555&cell_phone=5555556666 

initial_date=Jan-24-2014&report_center=0&last_name=blah&first_name=steve&sex=M&birthday=aug-11-1983&sin=987654321&drivers_license=&address1=12+stackoverflow+Street&residence_type=1&address2=&datemovein=Jun-02-2011&postal=a9a9a9&city=cityville&prov=ontario&country=Canada&telephone=5551111111&cell_phone=5552222222 

initial_date=Jul-26-2015&report_center=0&last_name=bar&first_name=foo&sex=M&birthday=Sep-26-1985&sin=123456789&drivers_license=&address1=414+stackoverflow+Street&residence_type=1&address2=Apartment+103&datemovein=Feb-02-2013&postal=a1a1a1&city=townsville&prov=ontario&country=Canada&telephone=5555555555&cell_phone=5555556666 

我想匹配的独特最终删除其余部分。 我试图用积极的前瞻来完成这项工作,但从我看过的文章看来,只有当重复是连续的,其中有些是,但很多都不是。有没有办法让我独自使用正则表达式来完成这个任务?

+1

你可以用前瞻来做到这一点,但它可能会太慢。你使用什么工具/语言? –

+0

使用行排序会松动位置关系。如果你不在乎,简单的字符串比较将是fastes。但是,对于1-off类型的事物,如果您使用了类型为Find [(?m)^(。*)\ n([\ S \ s] *?^ \ 1)的面向行的正则表达式,请替换' $ 2'(oldlength!= newlength){oldlength = newlength; str = str.replace(正则表达式,“$ 2”); newlength = str.length)}循环它会很慢,但有效削减一大层_slag_。 – sln

+0

我会先把它放到数据库中。这将使以后清理和提取其他数据变得更容易。 – charsi

回答

0

对此没有理由使用正则表达式; sort -u将执行您通过示例指定的内容。

+0

你为什么假设它是linux/unix?它可能是Windows,或者一些工具,文本编辑器...... – ClasG

+0

你为什么假设Windows没有'sort'? ... – Armali

+0

嗯,它确实,但不是用'-u'选项。 – ClasG