gpt4 book ai didi

regex - 如何在 awk 或 sed 中使用正则表达式来查找 DNA 序列中的所有同聚物?

转载 作者:行者123 更新时间:2023-12-01 22:28:57 25 4
gpt4 key购买 nike

背景

均聚物是具有连续相同碱基的 DNA 子序列,如 AAAAAAA。用于提取它的 python 示例:

import re
DNA = "ACCCGGGTTTAACCGGACCCAA"
homopolymers = re.findall('A+|T+|C+|G+', DNA)
print homopolymers
['A', 'CCC', 'GGG', 'TTT', 'AA', 'CC', 'GG', 'A', 'CCC', 'AA']

我的努力

我制作了一个解决问题的 gawk 脚本,但没有使用正则表达式:

echo "ACCCGGGTTTAACCGGACCCAA" | gawk '
BEGIN{
FS=""
}
{
homopolymer = $1;
base = $1;
for(i=2; i<=NF; i++){
if($i == base){
homopolymer = homopolymer""base;
}else{
print homopolymer;
homopolymer = $i;
base = $i;
}
}
print homopolymer;
}'

输出

ACCCGGGTTTAACCGGACCCAA

问题

如何在 awk 或 sed 中使用正则表达式,得到相同的结果?

最佳答案

grep -o 将在一行中为您提供:

echo "ACCCGGGTTTAACCGGACCCAA"| grep -ioE '([A-Z])\1*'
A
CCC
GGG
TTT
AA
CC
GG
A
CCC
AA

解释:

([A-Z])   # matches and captures a letter in matched group #1
\1* # matches 0 or more of captured group #1 using back-reference \1

sed 不是最好的工具,但因为 OP 要求它:

echo "ACCCGGGTTTAACCGGACCCAA" | sed -r 's/([A-Z])\1*/&\n/g'
A
CCC
GGG
TTT
AA
CC
GG
A
CCC
AA

PS:这是 gnu-sed。

关于regex - 如何在 awk 或 sed 中使用正则表达式来查找 DNA 序列中的所有同聚物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30441977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com