コマンドラインツールを介して2つのDNA配列の違いを表示する方法

コマンドラインツールを介して2つのDNA配列の違いを表示する方法

次の質問があります。

私のデータテーブルは次のとおりです

AAAGGGTTT AAAGGG
AAAGGGCCC GGGCCC

このように、3行目に2つのシーケンスの違いを表示したいと思います。

AAAGGGTTT AAAGGG TTT
AAAGGGCCC GGGCCC AAA

diffを使ってみました。ファイル(f1.txtとf2.txt)から個々のシーケンスを抽出し、diffで1行ずつ比較できるようにフォーマットしました。効果(データテーブルの1行))。

awk '{gsub(".","&\n");printf "%s",$0}' < f1.txt >f1a.txt
awk '{gsub(".","&\n");printf "%s",$0}' < f2.txt >f2a.txt
 
diff -y f1a.txt f2a.txt 

希望の結果を得る方法を知っている人はいますか?

ベストアンサー1

これがあなたが追いかけているのでしょうか?

awk '{$3=$1;sub($2,"",$3)}1' file
  • $3=$1最初のフィールドを3番目のフィールドにコピーし、

  • sub($2,"",$3)3番目のフィールド内で2番目のフィールドを探します。一致するものがある場合は、sub一致する文字列を3番目のフィールドの空の文字列に置き換えます。

  • 最後に1結果を印刷します。これは{print}ステートメントと同じで、書き換えることができます{$3=$1;sub($2,"",$3);print}

結果:

AAAGGGTTT AAAGGG TTT
AAAGGGCCC GGGCCC AAA

おすすめ記事