使用Sed/Awk提取该行的前三个唯一实例

Bio*_*o21 2 awk text-processing sed

我有一个20000探针的列表,有没有办法使用sed/awk提取每个探针的前三行/出现?

Example of dataset:
    Probe1 A  GTTAGAGGAGGTGGAAGAGC
    Probe1 B  CTGAGGTCGGGACGGAGCAC
    Probe1 C  GATGTAGGCGGTTGGCGTGG
    Probe1 D  GTTGGCGAAGTCACATCTAG
    Probe1 E  CATGTCGCCGACTCCGTCGA
    Probe1 F  GTGATGTTCTGAGTACATAG

    Probe3 A  GATTGTAGGTTTCCTGCCAG
    Probe3 L  ACCCAGCCAGGGGAAAACCA
    Probe3 Z  GGAGATGTAGGCGGTTGGCG
    Probe3 Y  GGAGATGTAGGCCTTAAAAA
    Probe3 D  GATTGTAGGGGTCCTGCCAG
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Probe1 A  GTTAGAGGAGGTGGAAGAGC
Probe1 B  CTGAGGTCGGGACGGAGCAC
Probe1 C  GATGTAGGCGGTTGGCGTGG
Probe3 A  GATTGTAGGTTTCCTGCCAG
Probe3 L  ACCCAGCCAGGGGAAAACCA
Probe3 Z  GGAGATGTAGGCGGTTGGCG
Run Code Online (Sandbox Code Playgroud)

kar*_*kfa 5

awk 救援!

$ awk '++a[$1]<4' file
Run Code Online (Sandbox Code Playgroud)

删除空行

$ awk '++a[$1]<4 && NF' file
Run Code Online (Sandbox Code Playgroud)

  • 如此简单而优雅.谢谢.只有一件事:你能解释一下++的一部分吗? (2认同)