请教如何删除 6 万 txt 中重复的行

2015-04-23 11:34:09 +08:00
 holinhot

文本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记录 真是奇怪

10167 次点击
所在节点    Python
66 条回复
USCONAN
2015-04-23 19:05:10 +08:00
sort uniq

P.S. 論起標題的嚴謹性和歧義的產生
leavic
2015-04-23 19:22:02 +08:00
sort|uniq

done
shierji
2015-04-23 19:34:14 +08:00
python cookbook里面有介绍保持顺序的去重方法
carmark
2015-04-23 19:40:01 +08:00
bloom filter 值得研究
用这个工具处理500g数据都没问题,当然有一定错误率
GreenJoson
2015-04-23 20:22:51 +08:00
@holinhot 把6W多个合并成一个,然后用emeditor 就行~~
KoleHank
2015-04-23 21:03:09 +08:00
每一行读出来了往redis里面一塞可行不?
rrfeng
2015-04-23 21:09:02 +08:00
不需要保证输出顺序的话:

awk '!a[$0}++' file1 > file1_output

如果要合并去重的话
awk '!a[$0]++' file1 file2 file3.... fileN > all_output


----------
一个合格的运维从来不用 sort -u 23333
LuciferSheng
2015-04-23 22:55:22 +08:00
果然都是程序员,我的方法是导入到 excel - 删除重复项...
withboost
2015-04-23 22:55:29 +08:00
第一反映是用 excel
ShunYea
2015-04-23 23:13:44 +08:00
@LuciferSheng 我想到的第一个方法也是这个。
zts1993
2015-04-23 23:23:54 +08:00
为什么没人用redis
Battle
2015-04-24 01:21:05 +08:00
那么多用编程解决的都编得定势思维了?用个excel一下子就行
geeti
2015-04-24 02:52:15 +08:00
cat|uniq > xx不就行了。。。。
20150517
2015-04-24 03:58:57 +08:00
来说个上T的情况怎么处理的办法,把这个弄进hdfs,开hive,来个row_number函数partition by重复的列,几T数据也帮你处理下来
ryd994
2015-04-24 07:16:08 +08:00
@geeti uniq前须先sort
@Battle bash cat sort uniq打字10秒顶天了
唯一怕内存不够。不过如果内存不够的话,excel也一样,就只能上数据库了。
ibolee
2015-04-24 09:31:51 +08:00
导入excle中滤重可能不?备份下试试。
s51431980
2015-04-24 09:37:57 +08:00
ls *.txt | xargs -I{} bash -c "sort -u {} > {}.bak ; mv {}.bak {}"
hicdn
2015-04-24 10:18:28 +08:00
awk '!a[$0]++' *.txt > new
lzg
2015-04-24 10:33:40 +08:00
你这个TXT应该是从SQL中导出的吧。在SQL中就很好做了。
你直接Select distinct再导出TXT。
holinhot
2015-04-24 12:24:16 +08:00
@touch 不去重用api不行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/185684

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX