ファイルから「>」と「バクテリア」という単語の間の部分を削除するにはどうすればよいですか?

ファイルから「>」と「バクテリア」という単語の間の部分を削除するにはどうすればよいですか?

ファイル内のすべての項目と単語>の間の部分を削除したいと思います。Bacteria

  • 以下は入力の例です。
    >AADV02000003.105686.107093 Bacteria;Cyanobacteria;Cyanobacteriia;Cyanobacteriales;
    
  • 結果は次のようになります。
    >Bacteria;Cyanobacteria;Cyanobacteriia;Cyanobacteriales;
    

これはFASTAファイル(生物情報学の一般的なファイル形式)なので、>常に行の最初の非空白文字があります一つこんなキャラクターになります。

使用を検討していますが、sedコマンドの設定方法がわかりません。ご協力ありがとうございます。

ベストアンサー1

ヘッダーがaで始まり、行の空白ではなく最初の文字としてのみ表示される複数のヘッダーとシーケンス行を含むfastaファイルであると仮定すると、>次の>ことができます。

sed 's/^ *>[^ ]* />/' file.fa 

これにより、ゼロ個以上のスペースで始まり、その後にaと行が続く行を見つけ、行の先頭>から>最初のスペースまですべてを置き換えて、>最初のスペースの前のすべてを効果的に削除します。

標準出力として印刷するのではなく、元のファイルを編集するには、次のようにします。

sed -i.bak 's/^ *>[^ ]* />/' file.fa 

file.fa.bakこれにより、元のファイルのコピーになるというファイルが作成されます。

おすすめ記事