gpt4 book ai didi

sorting - awk 根据特定列值完全删除重复行

转载 作者:行者123 更新时间:2023-12-05 08:56:30 24 4
gpt4 key购买 nike

我有一个像这样的数据集:

6   AA_A_56_30018678_E  0   30018678    P   A
6 SNP_A_30018678 0 30018678 A G
6 SNP_A_30018679 0 30018679 T G
6 SNP_A_30018682 0 30018682 T G
6 SNP_A_30018695 0 30018695 G C
6 AA_A_62_30018696_Q 0 30018696 P A
6 AA_A_62_30018696_G 0 30018696 P A
6 AA_A_62_30018696_R 0 30018696 P A

如果第 4 列有重复项,我想删除所有行。

我已经使用下面的代码(使用 sort、awk、uniq 和 join...)来获得所需的输出,但是,有更好的方法吗?

sort -k4,4 example.txt | awk '{print $4}' | uniq -u  > snp_sort.txt

join -1 1 -2 4 snp_sort.txt example.txt | awk '{print $3,$5,$6,$1}' > uniq.txt

这是输出

SNP_A_30018679  T   G   30018679
SNP_A_30018682 T G 30018682
SNP_A_30018695 G C 30018695

最佳答案

使用 awk 过滤掉重复的行并打印那些恰好出现一次的行。

awk '{k=($2 FS $5 FS $6 FS $4)} {a[$4]++;b[$4]=k}END{for(x in a)if(a[x]==1)print b[x]}' input_file

SNP_A_30018682 T G 30018682
SNP_A_30018695 G C 30018695
SNP_A_30018679 T G 30018679

这个想法是:-

  1. 将所有唯一的 $4 条目存储在一个数组 (a) 中,并在数组 b 中维护一个计数器
  2. 打印恰好出现一次的条目的数组。

关于sorting - awk 根据特定列值完全删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39824733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com