dnaファイルをインポートし、改行文字や空白文字がないことを確認してから、固有のコドンとその発生回数を出力するbashスクリプトを作成したいと思います。次のコードを使用しましたが、codonは引き続き「bash-3.2 $」を提供しています。構文が間違っているのか、なぜ正しい出力が得られないのかが混乱しています。
! /bin/bash
for (( pos=1; pos < length - 1; ++pos )); do
codon = substr($1, $pos, 3)
tr-d '\n' $1 | awk -f '{print $codon}' | sort | uniq -c
done
たとえば、dnafile というファイルに aacacgaactttaacacg パターンが含まれている場合、スクリプトは次の入出力を使用します。
$script dnafile
aac 3
acg 2
ttt 1
ベストアンサー1
スクリプトの最初の行が新しいbash
シェルを起動するので、対応する出力を取得します。
この行は読む必要があります
#!/bin/bash
(#
始めに注意してください)。
次に、awk
決して機能しない方法で構文とシェルコードを混在させます。
代わりに、単純に保ち、ファイルを3つの文字グループに分けて並べ替え、取得できる一意の文字数を数えます。
$ fold -w 3 dnafile | sort | uniq -c
3 aac
2 acg
1 ttt
このアプローチは、入力が常に3文字の倍数を含み、埋め込まれたスペースや他の文字がない限り機能します。