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

使用Sed/Awk提取行的前三个唯一实例,awk,sed,text-processing,Awk,Sed,Text Processing,我有一个包含20000个探测的列表,是否有方法使用sed/awk提取每个探测的前三行/事件 Example of dataset: Probe1 A GTTAGAGGAGGTGGAAGAGC Probe1 B CTGAGGTCGGGACGGAGCAC Probe1 C GATGTAGGCGGTTGGCGTGG Probe1 D GTTGGCGAAGTCACATCTAG Probe1 E CATGTCGCCGACTCCGTCGA Probe

我有一个包含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
期望输出:

Probe1 A  GTTAGAGGAGGTGGAAGAGC
Probe1 B  CTGAGGTCGGGACGGAGCAC
Probe1 C  GATGTAGGCGGTTGGCGTGG
Probe3 A  GATTGTAGGTTTCCTGCCAG
Probe3 L  ACCCAGCCAGGGGAAAACCA
Probe3 Z  GGAGATGTAGGCGGTTGGCG

这里不需要使用sed或awk(如果您想使用Python)。除非我弄错了你的问题,否则这应该可以做到:

probes = [
"""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"""]

for probe in probes:
    for i, line in enumerate(probe.split("\n")):
        print(line)
        if i >= 2:
            break

awk
救援

$ awk '++a[$1]<4' file

$awk'++a[$1]如此简单优雅。非常感谢。只有一件事:你能解释一个部分吗?很好。
++a[$1]
增加与第一个字段中的唯一值相关的值。小于4时打印该行。
$ awk '++a[$1]<4 && NF' file