代码之家  ›  专栏  ›  技术社区  ›  pgugger

基于一列,保留所有重复项大于2的行

  •  0
  • pgugger  · 技术社区  · 13 年前

    我有一个文件,它有数百万行,格式如下:

    SN608   VB050   1       1113    1699.50 2339.90 0       1       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCGTCAATTTTTTAAAAAAAACCCCCGGGGGGTAGTTTGTTAAAA   a[_ceeeegggfgiiigecccccccccccccccccccccbcccccccccccTTEHGGHHGJHGJSRGEGGJY]]]TX[[[XEEOX[EEEGGJGGGGJS]  1
    

    我用第9列对它进行了排序 sort -k9 第9列是一个100个字母的字符串,尽管有些条目可能有句点。现在,我想删除第9列中100个字母的字符串只出现1或2次(<3次)的行,并将所有其他行保存到文件中。

    和我一起玩 uniq ( -d -f9 -w100 )以及 sort 和嫌疑犯 awk 会很有帮助,但我太新手了,搞不清楚这一点。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Chris Seymour    13 年前

    这将把第一个和第二个匹配项存储在 outfile 以及中的所有其他比赛 dups :

    awk '++a[$9]>2{print $0>"dups";next}1' file > outfile