文本1中:
123.com. 3600 IN SOA ns1.dns.com. dns.dns.com. 1419473850 3600 3600 3600 3600
123.com. 3600 IN A 2.2.2.2
123.com. 3600 IN NS ns2.dns.com.
123.com. 3600 IN NS ns1.dns.com.
123.com. 3600 IN SOA ns1.dns.com. dns.dns.com. 1419473850 3600 3600 3600 3600
文本2中
aaaa.com. 3600 IN SOA ns1.youdns.com. dns.youdns.com. 1419473850 3600 3600 3600 3600
aaaa.com. 3600 IN A 11.1.1.1.1
aaaa.com. 3600 IN NS ns2.youdns.com.
aaaa.com. 3600 IN NS ns1.youdns.com.
aaaa.com. 3600 IN SOA ns1.youdns.com. dns.youdns.com. 1419473850 3600 3600 3600 3600
删除每个文本中重复的行
像文本1中
123.com. 3600 IN SOA ns1.dns.com. dns.dns.com. 1419473850 3600 3600 3600 3600
这行重复了去掉重复的一行
文本2中
aaaa.com. 3600 IN SOA ns1.youdns.com. dns.youdns.com. 1419473850 3600 3600 3600 3600
重复了 去掉重复的一行。
我也不知道为什么为有两条SOA记录 真是奇怪
1
holinhot OP 不能说固定删除第几行,这个行不通 因为每个域名的解析记录条数有多有少
|
2
magicianzrh Apr 23, 2015 每读入一行 一行文字md5一下作为key,就可以检查了
|
3
ksupertu Apr 23, 2015 uniq命令加管道重定向输出文件
|
4
airqj Apr 23, 2015 sort -u
|
5
ob Apr 23, 2015
话说搭个hadoop环境是否可行。。
|
6
ob Apr 23, 2015
好吧,没注意这是python节点,请忽略我上面的评论。。
|
7
ipconfiger Apr 23, 2015
@ob 6w行还需要动hadoop?
python读进来,"\n".join(list(set(f.readlines()))) 写回去就好了 |
8
youxiaer Apr 23, 2015
如果不考虑原有顺序就比较简单了。
for i in `find ./ -name "*.txt"`; do sort $i | uniq > $i".bak"; mv $i".bak" $i; done |
9
staticor Apr 23, 2015 考虑顺序?
如果不考虑的话是用set() : uniqlines = set(open('/tmp/foo').readlines()) *Nix下sort <file name> | uniq 也有用dict的keys()的: import collections with open(infile, 'rb') as inf, open(outfile, 'wb') as outf: outf.writelines(collections.OrderedDict.fromkeys(inf)) ----------------------------------------- 要保持原顺序, 那就算一行一行读也能操作: for ... if line not in ... : read_it 注: 我只是ST搬运工. |
10
holinhot OP |
11
youxiaer Apr 23, 2015 @holinhot 保证顺序也是可以的。
for i in `find ./ -name "*.txt"`; do awk '!a[$0]++' $i > $i".bak"; mv $i".bak" $i; done 用上面的语句就行 |
12
kimmykuang Apr 23, 2015
sort + uniq命令可以搞定的吧?
|
13
GreenJoson Apr 23, 2015
Emeditor 打开10多W万行的文本都不成问题,删除重复行用他的插件~~瞬间的事~~
|
14
atan Apr 23, 2015
sublime text 打开后 Edit>Permute Lines>Unique
|
15
xiaoheshang Apr 23, 2015 直接sort |uniq -c |sort -r 解决
|
16
duzhe0 Apr 23, 2015
感觉你是想做个diff,把逻辑上相同的行批掉就行了
mv aaaa.com.log aaaa.com.log.backup sed -i 's/^aaaa.com/123.com/;s/ns1.youdns.com. dns.youdns.com/ns1.dns.com. dns.dns.com./' aaaa.com.log diff 123.com.log aaaa.com.log |
17
duzhe0 Apr 23, 2015
弄错了, 不是mv, 是cp
|
18
jianghu52 Apr 23, 2015
up @GreenJoson 的做法,emeditor打开大文件绝对飞快。
|
19
momo07 Apr 23, 2015 全部复制到excel,全选6W行数据
数据选项卡-数据工具栏目“删除重复数据” |
20
cbsw Apr 23, 2015
不要拘泥于工具,Python只是一种方便的编程语言而已,sort、unique两个命令干这事最合适了
Do the right thing with the right tool, never try to do everything with one tool. |
22
chengzhoukun Apr 23, 2015 via Android
用SQL也可以吧
|
23
chengzhoukun Apr 23, 2015 via Android
用SQL
|
24
holinhot OP @GreenJoson 不是10w行吧。是6w个txt 每个txt大概10来行
|
25
holinhot OP @chengzhoukun 最终用api入库
|
26
MarioLuisGarcia Apr 23, 2015 vim里 :sort u
搞定! |
27
tikazyq Apr 23, 2015
cat <filename> | sort | uniq >> unique.txt
6万行数据不算大,直接unix操作就ok |
29
CodeDrift Apr 23, 2015
为什么大家看不清。。。人家说的是6个txt文件。。。。。。。。。
|
31
touch Apr 23, 2015
既然最终要入库的那不是一条sql语句的事
|
32
raman Apr 23, 2015
这里 sort - u file.txt
|
33
idblife Apr 23, 2015
导入数据库里操作一下
|
34
eycfsjd Apr 23, 2015
sort -u src.txt > des.txt 就可以搞定了...
|
35
likexian Apr 23, 2015
|
36
iiilii Apr 23, 2015
这么多人都没看懂楼主的问题,6万个txt文件,每个文件10几行。
|
37
incompatible Apr 23, 2015
python里没有 既能保持添加顺序、又能滤重 的数据结构?
类似Java里的LinkedHashSet |
38
staticor Apr 23, 2015
@incompatible ordereddict collections中的
|
39
mucid Apr 23, 2015
cat *.txt | sort | uniq > all.txt
|
41
USCONAN Apr 23, 2015
sort uniq
P.S. 論起標題的嚴謹性和歧義的產生 |
42
leavic Apr 23, 2015
sort|uniq
done |
43
shierji Apr 23, 2015
python cookbook里面有介绍保持顺序的去重方法
|
44
carmark Apr 23, 2015
bloom filter 值得研究
用这个工具处理500g数据都没问题,当然有一定错误率 |
45
GreenJoson Apr 23, 2015
@holinhot 把6W多个合并成一个,然后用emeditor 就行~~
|
46
KoleHank Apr 23, 2015
每一行读出来了往redis里面一塞可行不?
|
47
rrfeng Apr 23, 2015 不需要保证输出顺序的话:
awk '!a[$0}++' file1 > file1_output 如果要合并去重的话 awk '!a[$0]++' file1 file2 file3.... fileN > all_output ---------- 一个合格的运维从来不用 sort -u 23333 |
48
LuciferSheng Apr 23, 2015
果然都是程序员,我的方法是导入到 excel - 删除重复项...
|
49
withboost Apr 23, 2015
第一反映是用 excel
|
50
ShunYea Apr 23, 2015
@LuciferSheng 我想到的第一个方法也是这个。
|
51
zts1993 Apr 23, 2015 via Android
为什么没人用redis
|
52
Battle Apr 24, 2015 via iPad
那么多用编程解决的都编得定势思维了?用个excel一下子就行
|
53
geeti Apr 24, 2015
cat|uniq > xx不就行了。。。。
|
54
20150517 Apr 24, 2015
来说个上T的情况怎么处理的办法,把这个弄进hdfs,开hive,来个row_number函数partition by重复的列,几T数据也帮你处理下来
|
55
ryd994 Apr 24, 2015 via Android
|
56
ibolee Apr 24, 2015
导入excle中滤重可能不?备份下试试。
|
57
s51431980 Apr 24, 2015
ls *.txt | xargs -I{} bash -c "sort -u {} > {}.bak ; mv {}.bak {}"
|
58
hicdn Apr 24, 2015
awk '!a[$0]++' *.txt > new
|
59
lzg Apr 24, 2015
你这个TXT应该是从SQL中导出的吧。在SQL中就很好做了。
你直接Select distinct再导出TXT。 |