好的,所以我想删除重复的行,但它比这要复杂一点..
我有一个名为users.txt的文件,文件示例如下:
users:email@email.com
users1:email@email.com现在,由于我系统中的一个错误,人们可以使用与其他人相同的电子邮件进行注册,所以我想删除行是否多次具有相同的电子邮件,例如:
user:display:email@email.com
user2:email@email.com
user3:email@email.com
user4:email@email.com请注意user、user2、user3、user4都有相同的电子邮件地址。我想删除user2,user3,user4,但保留用户..或者反之亦然(第一个通过请求获得的)删除包含相同电子邮件的任何其他行。
所以如果
email@email.com is in 20 lines remove 19
spam@spam.com is in 555 lines remove 554所以第四..
发布于 2017-03-02 08:32:54
这可以使用awk来完成
awk '!a["user:display:email@email.com"]++' filename++的意思是,转到True。所以,在它与指纹查找匹配之后。
在这种情况下,使用!来扭转这一局面。所以在匹配之后,它变成了false。(如匹配后不打印)
示例:
$ awk 'a["user:display:email@email.com"]++' filename
user2:email@email.com
user3:email@email.com
user4:email@email.com
line_random1
linerandom_2_现在使用!
$ awk '!a["user:display:email@email.com"]++' filename
user:display:email@email.com因此,现在您只需要过滤出要awk的内容。不知道您的文件有多大,为了至少计算条目,我将执行以下操作:
$ grep -o 'email@email.com' filename | wc -l
4如果你知道要awk什么,只需要把它写到一个新的文件中--只是为了保存。
awk '!a["user:display:email@email.com"]++' filename >> new_filename发布于 2017-03-02 09:59:24
awk出手相救!
$ awk -F: '!a[$NF]++' file
user:display:email@email.comhttps://stackoverflow.com/questions/42544005
复制相似问题