ファイルのヘッダーを他のファイルの行リストに置き換える

ファイルのヘッダーを他のファイルの行リストに置き換える

約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/ $//'

おすすめ記事