特定のコーディングの問題に役立つ人がいるかどうか疑問に思います。次の内容を含むDNAシーケンシングファイルがあります(例:)。
Plate1A1_R1_AGTAGTACGACTAGCATCAGCATACGATCAGCATCAGCATCAG
Plate1A1_R1_GTAGATCGATGCATGCATGCTAGCTAGCTAGCTAGCTAGCTAA
Plate1A1_R1_AGCTAGCATCGATCGATGCTAGCATGCATCGATCGATGCATGC
Plate1A1_R2_AGCATCGATGCAGCATGCTAGCTAGCTAGCTAGCAGCTAGTCT
Plate1A1_R2_AGCATGCATCGATCGTAGCTAGCAGCGAGCGGCATCGATCGAT
Plate1A2_R1_CAGCTAGATGCATCGATCGATCGATCGATCGATGCTAGCTTAC
Plate1A2_R1_CAGTAGCATGCATGCATGCATGCATGCATCGATGCTAGCTAGC
Plate1A2_R1_ACAACGTAGCTAGCTAGCTACTACTAGTCATCATCGATGCTAG
Plate1A2_R1_CAGCTAGCTAGCTAGCTAGGCTACATCGATCGTAGCTAGTCGA
Plate1A2_R1_CAGTCAGCATGCTATCGATCGTAGCTAGTCATCGATGTAGTGA
... etc.
いくつかの線が同じ類似の開始パターンに属することがわかります(ここではPlate1A1_R1、Plate1A1_R2、Plate1A2_R1)。次のように、各グループ化の後に空白行を入れたいと思います。
Plate1A1_R1_AGTAGTACGACTAGCATCAGCATACGATCAGCATCAGCATCAG
Plate1A1_R1_GTAGATCGATGCATGCATGCTAGCTAGCTAGCTAGCTAGCTAA
Plate1A1_R1_AGCTAGCATCGATCGATGCTAGCATGCATCGATCGATGCATGC
Plate1A1_R2_AGCATCGATGCAGCATGCTAGCTAGCTAGCTAGCAGCTAGTCT
Plate1A1_R2_AGCATGCATCGATCGTAGCTAGCAGCGAGCGGCATCGATCGAT
Plate1A2_R1_CAGCTAGATGCATCGATCGATCGATCGATCGATGCTAGCTTAC
Plate1A2_R1_CAGTAGCATGCATGCATGCATGCATGCATCGATGCTAGCTAGC
Plate1A2_R1_ACAACGTAGCTAGCTAGCTACTACTAGTCATCATCGATGCTAG
Plate1A2_R1_CAGCTAGCTAGCTAGCTAGGCTACATCGATCGTAGCTAGTCGA
Plate1A2_R1_CAGTCAGCATGCTATCGATCGTAGCTAGTCATCGATGTAGTGA
... etc.
つまり、各行の最初の11文字を取得して、下の行でパターンが発生しなくなった点を検索し、その点に空白の行を挿入できる必要があります。
頑張ったsedそしてアッループの問題で問題が発生していますが、while read line
テキストファイルの連続した行に使用する検索変数の最初の11文字を格納する方法が見つからないようです(検索変数が単一行処理で「停止」した場合)。
誰かがリダイレクト(<)を介して参照ファイルにアクセスできるソリューションを提供できることを願っています。この形式には、数百行のDNA配列データがあり、ファイルを1つずつ渡すスクリプトで定義された数百の異なる「プレート名」があります。一行移動)、例えば
while read line ; do echo "${line:0:11}" ; done < filename.txt
どんなアドバイスもありがとうございます!
ベストアンサー1
awk '{
thisplate=substr($0, 1, 11);
if (thisplate != plate) {
print "";
plate=thisplate
};
print }' < input | sed '1d'
これはSukminderが書いたコメントの長いバージョンです。 11文字のプレフィックスを保存し、新しいプレフィックスが古いプレフィックスと異なる場合は、改行文字を印刷します。空の最初の行を削除しますsed
。