約28000個のシーケンスを含むfastaファイルがあります。このシーケンスのヘッダーを別のファイルの行リストに置き換えたいと思います。例:
ファイル1:
sp|B7UM99|TIR_ECO27
MPIGNLGNNVNGNHLIPPAPP.....
sp|P0ACF8|HNS_ECOLI
MSEALKILNNIRTLRAQ........
sp|P24232|HMP_ECOLI
MLDAQTIATVKATIPLLVET..........
ファイル2:
sp|B7UM99|TIR_ECO27OS=Escherichia coli
sp|P0ACF8|HNS_ECOLI=Human
sp|P24232|HMP_ECOLI=Flavohemoprotein
希望の出力:
sp|B7UM99|TIR_ECO27OS=Escherichia coli
MPIGNLGNNVNGNHLIPPAPP.....
sp|P0ACF8|HNS_ECOLI=Human
MSEALKILNNIRTLRAQ........
sp|P24232|HMP_ECOLI=Flavohemoprotein
MLDAQTIATVKATIPLLVET..........
ベストアンサー1
次のように、sedコマンドとPasteコマンドを使用してこれを実行できます。
$ sed 's/$/\n/' file2 | paste -d ' ' file1 - | sed 's/^sp.* sp/sp/'
sp|B7UM99|TIR_ECO27OS=Escherichia coli
MPIGNLGNNVNGNHLIPPAPP.....
sp|P0ACF8|HNS_ECOLI=Human
MSEALKILNNIRTLRAQ........
sp|P24232|HMP_ECOLI=Flavohemoprotein
MLDAQTIATVKATIPLLVET..........
最初のsedは、各項目の後に空白行を追加して、貼り付ける短いファイルを準備します。これで、両方のファイルに同じ数の行とヘッダー(古いものと新しいもの)があるので、貼り付けコマンドを実行します。最後に、2番目のsedは古いヘッダーテキストを削除します。
シーケンス行には末尾のスペースがあります。削除が重要な場合は、結果を別のsedにパイプすることができます| sed 's/ $//'
。