部分文字列配列の作成方法

部分文字列配列の作成方法

文字列である変数シーケンスがあるとしましょう。

> sequence="AAAGCATATGCTAGCCCGTATAGCGATACTAGCTATACGATATATATGATCAATGCCCGTATAG"

各要素が初期シーケンスの3文字サブストリングであるseqのような配列を作成したいと思います。

echo $seq[1]
echo $seq[2]
echo $seq[n]

以下を提供します。

AAA  
GCA
TAG

ここで、nは配列の最後の要素です。誰かがこのためにスクリプトを書くことができますか?これは私がやろうとしているUnixコードとC ++コードの奇妙な組み合わせです。しかし、すべてUnixコードでなければなりません。

sequence="AAAGCATATGCTAGCCCGTATAGCGATACTAGCTATACGATATATATGATCAATGCCCGTATAG"
array_name=(seq) while($i+2<length(sequence)) {
seq[i]=substring(sequence,i,3)  i=i+3 }

ベストアンサー1

以下でこれを行うとしましょうbash

sequence="AAAGCATATGCTAGCCCGTATAGCGATACTAGCTATACGATATATATGATCAATGCCCGTATAG"

for (( i = 0; i < ${#sequence}; i += 3 )); do
    printf '%s\n' "${sequence:i:3}"
done

これは一度に3つの塩基対ずつシーケンス長にわたって繰り返される。各反復ごとに、3つの塩基からなる次のセットを印刷します。

seq印刷する代わりに配列に入れるには、次の手順を実行します。

sequence="AAAGCATATGCTAGCCCGTATAGCGATACTAGCTATACGATATATATGATCAATGCCCGTATAG"

for (( i = 0; i < ${#sequence}; i += 3 )); do
    seq+=( "${sequence:i:3}" )
done

これはあなたに配列を提供しますseq。個々の配列要素は等として使用することができます"${seq[0]}""${seq[1]}"

残りの2つを取得するには読書ボックス、1、2から始まるようにループを変更します。

おすすめ記事