Shell脚本从文件中删除重复的条目

时间:2012-02-03 10:03:44

标签: file shell duplicates

我想从文件中删除重复的条目。该文件如下所示:

xyabcd1:5!b4RlH/IgYzI:cvsabc
xyabcd2:JXfFZCZrL.6HY:cvsabc
xyabcd3:mE7YHNejLCviM:cvsabc
xyabcd1:5!b4RlH/IgYzI:cvsabc
xyabcd4:kQiRgQTU20Y0I:cvsabc
xyabcd2:JXfFZCZrL.6HY:cvsabc
xyabcd1:5!b4RlH/IgYzI:cvsabc
xyabcd2:JXfFZCZrL.6HY:cvsabc
xyabcd4:kQiRgQTU20Y0I:cvsabc
xyabcd2:JXfFZCZrL.6HY:cvsabc

如何使用shell脚本从此文件中删除重复项?

2 个答案:

答案 0 :(得分:4)

从排序联系人页面:

  

-u, - 唯一             用-c,检查严格的订购;没有-c,只输出相等的第一个

sort -u yourFile

应该这样做。

答案 1 :(得分:2)

如果您不想更改输入文件的顺序,可以执行以下操作:

$ awk '!v[$0]{ print; v[$0]=1 }' input-file

或者,如果文件足够小(少于40亿行,以确保没有行重复40亿次),您可以这样做:

$ awk '!v[$0]++' input-file

根据awk的实现,您可能不必担心文件长度小于2 ^ 32行。关注的是,如果您看到相同的行2 ^ 32次,您可能会溢出数组值中的整数,并且第二次输出重复行的2 ^ 32nd实例(或2 ^ 31st)。实际上,这不太可能是一个问题!