私はUNIXプログラミング(ターミナル経由でMacOSX Mountain Lionで実行)に非常に慣れていません。私は、バイオインフォマティクスと分子手法のコース (2 つのクラスがありました) で基本を学んでおり、最終的にデータ管理の目的で perl と python を使用する予定です。とにかく、ファイルのグループからデータを取得し、それを特定のプログラム (Migrate-N) で読み取ることができる形式で新しいファイルに書き込むシェル スクリプトを作成する必要があります。
コマンドラインに入力すると、必要なことを個別に実行するための関数がいくつかありますが、それらをすべてスクリプトにまとめて実行しようとすると、エラーが発生します。詳細は以下の通りです(長文で申し訳ありません)。
#! /bin/bash
grep -f Samples.NFCup.txt locus1.fasta > locus1.NFCup.txt
grep -f Samples.NFCup.txt locus2.fasta > locus2.NFCup.txt
grep -f Samples.NFCup.txt locus3.fasta > locus3.NFCup.txt
grep -f Samples.NFCup.txt locus4.fasta > locus4.NFCup.txt
grep -f Samples.NFCup.txt locus5.fasta > locus5.NFCup.txt
grep -f Samples.Salmon.txt locus1.fasta > locus1.Salmon.txt
grep -f Samples.Salmon.txt locus2.fasta > locus2.Salmon.txt
grep -f Samples.Salmon.txt locus3.fasta > locus3.Salmon.txt
grep -f Samples.Salmon.txt locus4.fasta > locus4.Salmon.txt
grep -f Samples.Salmon.txt locus5.fasta > locus5.Salmon.txt
grep -f Samples.Cascades.txt locus1.fasta > locus1.Cascades.txt
grep -f Samples.Cascades.txt locus2.fasta > locus2.Cascades.txt
grep -f Samples.Cascades.txt locus3.fasta > locus3.Cascades.txt
grep -f Samples.Cascades.txt locus4.fasta > locus4.Cascades.txt
grep -f Samples.Cascades.txt locus5.fasta > locus5.Cascades.txt
echo 3 5 Salex_melanopsis > Smelanopsis.mig
echo 656 708 847 1159 779 >> Smelanopsis.mig
echo 154 124 120 74 126 NFCup >> Smelanopsis.mig
cat locus1.NFCup.txt locus2.NFCup.txt locus3.NFCup.txt locus4.NFCup.txt locus5.NFCup.txt >> Smelanopsis.mig
echo 32 30 30 18 38 Salmon River >> Smelanopsis.mig
cat locus1.Salmon.txt locus2.Salmon.txt locus3.Salmon.txt locus4.Salmon.txt locus5.Salmon.txt >> Smelanopsis.mig
echo 56 52 24 29 48 Cascades >> Smelanopsis.mig
cat locus1.Cascades.txt locus2.Cascades.txt locus3.Cascades.txt locus4.Cascades.txt locus5.Cascades.txt >> Smelanopsis.mig
一連の grep は、各遺伝子座の各サイトの DNA 配列データを新しいテキスト ファイルに引き出しているだけです。Samples...txt ファイルにはサイトのサンプル ID 番号があり、.fasta ファイルにはサンプル ID ごとに編成された配列情報があります。個別に実行すると、コマンドラインでgreppingがうまく機能します。
コードの 2 番目のグループは、最終的に必要な実際の新しいファイルを作成し、.mig で終わります。エコー ラインは、プログラムが情報を必要とするカウント (遺伝子座ごとの塩基対、分析における集団、サイトごとのサンプルなど) に関するデータです。cat 行は、echo 行で指定されたサイト固有の情報の下にあるすべての grep によって作成された、サイト データごとの遺伝子座をマッシュアップします。あなたは間違いなく写真を手に入れます。
シェル スクリプトを作成するために、私は Excel で始めていたので、セルを簡単にコピーして貼り付け/自動入力し、タブ区切りのテキストとして保存し、TextWrangler でそのテキスト ファイルを開いて、.sh ファイルとして保存する前にタブを削除できます (行改行: Unix (LF) およびエンコード: Unicode (UTF-8)) は、スクリプトで使用されるすべてのファイルと同じディレクトリにあります。chmod +x FILENAME.sh
andを使用しchmod u+x FILENAME.sh
て、実行可能であることを確認しようとしましたが、役に立ちませんでした。スクリプトを 1 行の grep 行 (#! /bin/bash の最初の行) に切り詰めたとしても、それを機能させることはできません。これらのファイルはいずれも 160KB を超えておらず、一部のファイルは非常に小さいため、このプロセスはコマンド ラインに直接入力するだけで完了します。これは私が入力したものであり、ファイルを実行しようとすると得られるものです (HW は正しいディレクトリです)
localhost:HW Mirel$ MigrateNshell.sh
-bash: MigrateNshell.sh: command not found
私は 2 日間この行き詰まりに陥っているので、どんな意見でも大歓迎です! ありがとう!!