我有一个2 GB的文本文件,包含多个网址。
我想唯一显示此列表。我该怎么办?
我有一个类似
的列表http://search.test.com:80/results.aspx?c=us&l=en&s=dhs&cat=abt%7ccss&cs=19&k=upgrades&img=True&sum=True&qmp=25&qo=0&eh=3&rrr=False
http://search.test.com:80/results.aspx?c=us&l=en&s=dhs&cat=abt%7ccss&cs=19&k=upgrades&img=True&sum=True&qmp=25&qo=0&eh=NoEvent&rrr=False
http://search.test.com:80/results.aspx?c=us&l=en&s=dhs&cat=abt%7ccss&cs=19&k=upgrades&img=True&sum=false&qmp=50&qo=0&eh=2&rrr=False
http://search.test.com:80/results.aspx?c=us&l=en&s=dhs&cat=abt%7cprr&cs=19&k=Buffalo&img=True&sum=false&qmp=10&qo=0&eh=2&rrr=False&subcat=&snpsb=K&snpsd=A
http://search.test.com:80/results.aspx?c=us&l=en&s=dhs&cat=abt%7cprr&cs=19&k=CD+burners&img=False&sum=false&qmp=25&qo=0&eh=2
如果行匹配80%相同,我想唯一显示此列表。
答案 0 :(得分:0)
戴上我的阅读器帽子,“ 80%”是该行的前缀,其长度为行长的80%:
awk '
{len80 = int(length($0) * 0.8); key = substr($0, 1, len80); uniq[key] = $0}
END {for (key in uniq) print uniq[key]}
' urlfile
对于您的示例输入,输出中包括每一行。
这将需要大量的内存来存储您2GB的大部分输入。