- 论坛徽章:
- 31
|
本帖最后由 bmne 于 2016-08-05 11:55 编辑
只是把文档去重,效率排前面(临时制定一个标准:处理1GB以下的文档使用)。(除去sort -u不在讨论范围中)
1、awk 'a[$0]; END{for (i in a){print i}}'
2、perl -ane 'print if(++$a{$_}==1)'
3、awk '!a[$0]++'
4、sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P' (虽最后一行产生空格,但,还是把它排上吧)
上面是我实战中摸索的效率从高到低的排序。但,实战中有时候表现也不稳定。处理1GB文档时,表现不是特别明显
请大神指点
另外,诚恳求助大神来一个效率比上面稍高一点的代码
辛苦了
忘说了,如果低于1GB,最好800M以下。下面这个排在第一位- cat<<EOF>aa.py
- import time
- print(time.strftime('readfile %H:%M:%S'))
- raw_lines = file('8.txt').readlines()
- print(time.strftime('procdata %H:%M:%S'))
- un_keys = set()
- unlines = []
- for l in raw_lines:
- if l in un_keys:
- continue
- un_keys.add(l)
- unlines.append(l)
- print(time.strftime('writefile %H:%M:%S'))
- file('8.txt.out','w').writelines(unlines)
- EOF
- python aa.py
复制代码 |
|