文字列である変数シーケンスがあるとしましょう。
> 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から始まるようにループを変更します。