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

qyswt5oh  于 2022-12-13  发布在  Shell
关注(0)|答案(3)|浏览(144)

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

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脚本删除此文件中的重复项?

mwg9r5ms

mwg9r5ms1#

在排序手册页中:
-u,--与-c唯一,检查是否严格排序;如果不使用-c,则仅输出相等游程的第一个

sort -u yourFile

应该做的。

g9icjywg

g9icjywg2#

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

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

或者,如果文件足够小(少于40亿行,以确保没有行重复40亿次),则可以执行以下操作:

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

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

8nuwlpux

8nuwlpux3#

@shadyabhi回答正确,如果输出需要重定向到不同的文件,请用途:
排序-u输入文件-o输出文件

相关问题