regex - 使用 bash 计算模式之间的行/字符
问题描述
我想计算每个对象的所有字符(ACGT)(这里,,,)GeneID:1
,gi|479
以便nf|NZ_AC14
我知道每个对象的长度(无需计算 A 的数量,C 的数量..)
>GeneID:1
ATGCGTTTGCGTTTGCAAATCGACTAGCTTTTGGCCCAAAGCGTGCTGCAAAAGTATGGA
AGTAAAGCTACCGTACGTAGCTAAGCCTACCGATCGATCGATCGATCGACGCCCCCCCCC
>gi|479
ATGGATTGGATGGAATCACAATTCAAGACATGTACGCATGGCTGCGACTGGAAG
>nf|NZ_AC14
ATGGCTAGATATGTCGTATGTTGGATGTTCACCATCAACAATCCCG
我有多个这样的文件,我想使用 bash 命令,以便一切都自动化,但我什至不知道从哪里开始执行此操作(主要是在以 开头的行之后我将如何计算>
)
所需的输出将是:
>GeneID:1 121
>gi|479 54
>nf|NZ_AC14 47
但如果我只有数字也可以。
谢谢
解决方案
使用 awk:
awk -v RS='>[^\n]+' 'oRT{gsub("\n","");print oRT,length()}{oRT=RT}' file
记录分隔符设置为以 . 开头的基因名称>
。通过删除换行符将记录的所有字段连接在一起。然后打印记录的长度。
该变量oRT
设置为捕获RT
前一行的记录终止符。
推荐阅读
- postgresql - COPY 命令运行缓慢
- alfresco - Alfresco 如何使用 java 客户端在 DB 中存储元数据
- wordpress - 如何在插件 Polylang 中显示所有语言的帖子?
- clion - CLion 的 CMake GUI
- linux - Keybase "keybased.sock: 连接无 osuch 文件或目录"
- c# - Selenium C# - 将表值与可用值进行比较
- mysql - SQL如何在同一个数据库的不同表上的相同列名中添加相同的注释
- python - 无法从 Flask 执行 python 脚本
- mysql - 如果特定月份没有记录,如何获得 0 条记录?
- python - 使用 ImageDataGenerator 的预处理函数转换颜色空间