使用Sed/Awk提取行的前三个唯一实例
我有一个包含20000个探测的列表,是否有方法使用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
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