長さが常に9文字でなければならない変数があります。
PEPTIDE_SEQ="AAAAAAAAA"
その後、長さ変数を作成しました。
len=9
私が望むのは、PEPTIDE_SEQで始まり、次のファイルチャンクとして出力することです。
AAAAAAAAA
CAAAAAAAA
DAAAAAAAA
EAAAAAAAA
FAAAAAAAA
GAAAAAAAA
HAAAAAAAA
IAAAAAAAA
KAAAAAAAA
LAAAAAAAA
MAAAAAAAA
NAAAAAAAA
PAAAAAAAA
QAAAAAAAA
RAAAAAAAA
SAAAAAAAA
TAAAAAAAA
VAAAAAAAA
WAAAAAAAA
YAAAAAAAA
B、J、O、U、X、Z文字を除いて、このコードを使用すると、PEPTIDE変数のみを繰り返しファイルに出力できます。
while [ $i -le 20 ]
do
printf '%*s\n' "$len" | tr ' ' "$PEPTIDE_SEQ" >> demo.txt
i=$(( i+1 )) # increments $i
done
sedまたはawkを使用してこのコードブロックをどのようにシミュレートできますか?その後、別のコードブロックを作成しますが、今回は2番目の文字を置き換え、3番目のコードブロックに対してループを繰り返し、3番目の文字を置き換えるように続けます。
ベストアンサー1
そしてbash
:
#!/bin/bash
pep="AAAAAAAA"
pos=1
while [ "$pos" -le "${#pep}" ]; do
for aa in A C D E F G H I K L M N P Q R S T V W X Y
do
printf '%s%s%s\n' "${pep:0:pos-1}" "$aa" "${pep:pos}"
done
pos=$(( pos + 1 ))
done
外側のループはwhile
所与のペプチド配列の位置を通過し、各位置について有効なアミノ酸コードがその位置のペプチドに1つずつ入力される(これは、関連位置までペプチド部分の部分文字列拡張を使用する。その後、ペプチドの尾端に別の部分文字列拡張が行われる。