首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用扭曲gnuwin32删除重复行

使用扭曲gnuwin32删除重复行
EN

Stack Overflow用户
提问于 2017-03-02 07:19:44
回答 2查看 50关注 0票数 0

好的,所以我想删除重复的行,但它比这要复杂一点..

我有一个名为users.txt的文件,文件示例如下:

代码语言:javascript
复制
users:email@email.com
users1:email@email.com

现在,由于我系统中的一个错误,人们可以使用与其他人相同的电子邮件进行注册,所以我想删除行是否多次具有相同的电子邮件,例如:

代码语言:javascript
复制
user:display:email@email.com
user2:email@email.com
user3:email@email.com
user4:email@email.com

请注意user、user2、user3、user4都有相同的电子邮件地址。我想删除user2,user3,user4,但保留用户..或者反之亦然(第一个通过请求获得的)删除包含相同电子邮件的任何其他行。

所以如果

代码语言:javascript
复制
email@email.com is in 20 lines remove 19
spam@spam.com is in 555 lines remove 554

所以第四..

EN

回答 2

Stack Overflow用户

发布于 2017-03-02 08:32:54

这可以使用awk来完成

代码语言:javascript
复制
awk '!a["user:display:email@email.com"]++' filename

++的意思是,转到True。所以,在它与指纹查找匹配之后。

在这种情况下,使用!来扭转这一局面。所以在匹配之后,它变成了false。(如匹配后不打印)

示例:

代码语言:javascript
复制
$ awk 'a["user:display:email@email.com"]++' filename 
user2:email@email.com
user3:email@email.com
user4:email@email.com
line_random1
linerandom_2_

现在使用!

代码语言:javascript
复制
$ awk '!a["user:display:email@email.com"]++' filename
user:display:email@email.com

因此,现在您只需要过滤出要awk的内容。不知道您的文件有多大,为了至少计算条目,我将执行以下操作:

代码语言:javascript
复制
$ grep -o 'email@email.com' filename | wc -l
4

如果你知道要awk什么,只需要把它写到一个新的文件中--只是为了保存。

代码语言:javascript
复制
awk '!a["user:display:email@email.com"]++' filename >> new_filename
票数 0
EN

Stack Overflow用户

发布于 2017-03-02 09:59:24

awk出手相救!

代码语言:javascript
复制
$ awk -F: '!a[$NF]++' file 

user:display:email@email.com
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42544005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档