首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除基于文件复制数学的行。

删除基于文件复制数学的行。
EN

Stack Overflow用户
提问于 2018-02-14 10:22:04
回答 1查看 28关注 0票数 1

我有1,000,000行的文件。该文件有400个字段,但我对第三个文件感兴趣。该文件的一个示例如下(仅输出前8个字段和前8行):

代码语言:javascript
运行
复制
CHROM   POS     ID         REF     ALT     QUAL    FILTER  INFO
chr1    693731  1:693731   A       G       .       PASS    AF=0.1294;MAF=0.1294;R2=0.5931;AC=29;AN=218        
chr1    715265  1:715265   C       T       .       PASS    AF=0.03657;MAF=0.03657;R2=0.35976;AC=6;AN=218        
chr1    715367  1:715367   A       G       .       PASS    AF=0.03785;MAF=0.03785;R2=0.38758;AC=7;AN=218        
chr1    717485  1:717485   C       A       .       PASS    AF=0.03738;MAF=0.03738;R2=0.3826;AC=7;AN=218        
chr1    720381  1:720381   G       T       .       PASS    AF=0.03843;MAF=0.03843;R2=0.38578;AC=8;AN=218        
chr1    721290  1:721290   G       C       .       PASS    AF=0.03823;MAF=0.03823;R2=0.38292;AC=8;AN=218        
chr1    723891  rs2977670  G       C       .       PASS    AF=0.9529;MAF=0.0471;R2=0.34792;AC=209;AN=218
chr1    726794  1:726794   C       G       .       PASS    AF=0.03769;MAF=0.03769;R2=0.40295;AC=8;AN=218

我有一些重复了ID字段的行,我可以使用

代码语言:javascript
运行
复制
 cat myfile | cut -f3 | awk '{a[$0]++; if(a[$0]==2) print; if (a[$0]>=2) print}'

上面命令的示例输出:

代码语言:javascript
运行
复制
1:186936590
1:186936590
10:54530788
10:54530788
14:50274280
14:50274280
17:51326717
17:51326717

我想要的是删除一个重复的条目,但保留另一个。字段ID是唯一重复的,行的其余部分是不同的,所以我想我不能使用awk '!a[$0]++'

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-14 10:32:58

您可以使用以下awk命令来执行此操作,我们将检查每个$3值的哈希值计数小于2

代码语言:javascript
运行
复制
awk 'NR==1 || unique[$3]++ < 2' file

条件unique[$3]++ < 2特别意味着打印该行,直到它第二次看到$3中的值为止。对于后续的迭代,值将大于2,而该行不会在其上打印。

代码语言:javascript
运行
复制
$ printf 'id\n1\n2\n1\n2\n1\n2\n' | awk 'NR==1 || unique[$0]++ < 2'
id 
1
2
1
2

条件NR==1只对包含打印的头信息的第一行断言为true。

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

https://stackoverflow.com/questions/48784766

复制
相关文章

相似问题

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