awk命令过滤3次以上数据过滤

我有一个像这样分隔的数据集选项卡:

A  B  C  D
1  aaa 1 2
1  aaa 3 4
1  aaa 5 6
1  bbb 7 8
1  ccc 9 1
1  ccc 2 3
1  ddd 4 5
1  ddd 6 7
1  ddd 8 9
1  ddd 1 2

期望的输出:

A  B  C  D
1  aaa 1 2
1  aaa 3 4
1  aaa 5 6
1  ddd 4 5
1  ddd 6 7
1  ddd 8 9
1  ddd 1 2

我试过这个:

awk '++a[$2]>3' test.tsv test.tsv > test-2.tsv

不需要的输出:

1   ddd 1   2
1   aaa 1   2
1   aaa 3   4
1   aaa 5   6
1   ccc 2   3
1   ddd 4   5
1   ddd 6   7
1   ddd 8   9
1   ddd 1   2

回答

你可以试试这个 2 pass awk:

awk -F 't' 'FNR==NR {freq[$2]++; next} freq[$2] >= 3' test.tsv{,}

1  aaa 1 2
1  aaa 3 4
1  aaa 5 6
1  ddd 4 5
1  ddd 6 7
1  ddd 8 9
1  ddd 1 2


以上是awk命令过滤3次以上数据过滤的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>