Linux awk给fasta中重复的染色体名做重复标记
001、 awk实现
[root@pc1 test1]# ls a.txt [root@pc1 test1]# cat a.txt ## 测试文件 >jcf7180003470556 2 7 >jcf7180003470556 3 8 >jcf7180003470552 4 9 6 >jcf7180003470546 5 3 >jcf7180003470558 6 2 >jcf7180003470556 7 1 >jcf7180003470550 8 5 >jcf7180003470558 10 4 3
[root@pc1 test1]# awk '{if($0 ~ />/) {ay[$0]++}; if($0 ~ />/ && ay[$0] > 1) {$0 = $0"_"ay[$0]}; print $0}' a.txt >jcf7180003470556 ## 给重复的染色体名做标记 2 7 >jcf7180003470556_2 3 8 >jcf7180003470552 4 9 6 >jcf7180003470546 5 3 >jcf7180003470558 6 2 >jcf7180003470556_3 7 1 >jcf7180003470550 8 5 >jcf7180003470558_2 10 4 3
002、python实现
a、
[root@pc1 test1]# cat a.fa ## 测试数据 >jcf7180003470556 2 7 >jcf7180003470556 3 8 >jcf7180003470552 4 9 6 >jcf7180003470546 5 3 >jcf7180003470558 6 2 >jcf7180003470556 7 1 >jcf7180003470550 8 5 >jcf7180003470558 10 4 3 [root@pc1 test1]# cat test.py ## python程序 #!/usr/bin/env python3 # -*- coding: utf-8 -*- in_file = open("a.fa", "r") dict1 = dict() ## dict1 = {} for i in in_file: i = i.strip() if i[0] == ">" and i not in dict1: dict1[i] = 1 elif i[0] == ">" and i in dict1: dict1[i] += 1 if i[0] == ">" and dict1[i] > 1: i = i + "_" + str(dict1[i]) print(i) in_file.close() [root@pc1 test1]# python test.py ## 执行程序 >jcf7180003470556 2 7 >jcf7180003470556_2 3 8 >jcf7180003470552 4 9 6 >jcf7180003470546 5 3 >jcf7180003470558 6 2 >jcf7180003470556_3 7 1 >jcf7180003470550 8 5 >jcf7180003470558_2 10 4 3
b、引入collenctions 中 的defaultdict
[root@pc1 test1]# ls a.fa test.py [root@pc1 test1]# cat a.fa ## 测试数据 >jcf7180003470556 2 7 >jcf7180003470556 3 8 >jcf7180003470552 4 9 6 >jcf7180003470546 5 3 >jcf7180003470558 6 2 >jcf7180003470556 7 1 >jcf7180003470550 8 5 >jcf7180003470558 10 4 3 [root@pc1 test1]# cat test.py ## 程序 #!/usr/bin/env python3 # -*- coding: utf-8 -*- from collections import defaultdict dict1 = defaultdict(int) in_file = open("a.fa", "r") for i in in_file: i = i.strip() if i.startswith(">"): dict1[i] += 1 if i.startswith(">") and dict1[i] > 1: i = i + "_" + str(dict1[i]) print(i) in_file.close() [root@pc1 test1]# python3 test.py ## 执行程序 >jcf7180003470556 2 7 >jcf7180003470556_2 3 8 >jcf7180003470552 4 9 6 >jcf7180003470546 5 3 >jcf7180003470558 6 2 >jcf7180003470556_3 7 1 >jcf7180003470550 8 5 >jcf7180003470558_2 10 4 3
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-10-13 linux文件测试语句
2020-10-13 linux 系统中while循环示例
2020-10-13 linux系统中$RANDOM命令
2020-10-13 linux系统中let命令
2020-10-13 linux系统中expr命令
2020-10-13 linux系统中 read命令