これは標準のfasta形式ファイルではなく、私のfile1.fa(seqID、\ t、シーケンス)です。
abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
それでは、次のように標準のfasta形式に変換したいと思います。
>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
このようなことを試しましたが、「>」を追加する方法がわかりません。誰でも助けることができますか?
less -S file1.fa | sed 's/\t/\n/g' > file2.fa
答え1
sed
代わりに単に使用することもできますless
。ファイルを編集することもできます。所定の位置に出力を新しいファイルにリダイレクトせずに。
あなたのsed
コマンドは次のとおりです
sed -i'.bak' 's/\(.*\)\t/>\1\n/g' file1.fa
または編集したくない場合所定の位置にあなたはそれを使用することができます:
sed 's/\(.*\)\t/>\1\n/g' file1.fa > file2.fa
答え2
使用幸せ(以前のPerl_6)
raku -pe 's/^ (<:Ll>+) (\s) />$0\n/;'
#OR
raku -pe 's/^ <((<:Ll>+) (\s))> <:Lu>+ />$0\n/;'
この回答では、Rakuの:Ll
(Unicode小文字)および:Lu
(Unicode大文字)文字クラス定義を使用します.
https://docs.raku.org/言語/regexes#Unicode_properties
必要に応じて、\S+
空白ではなく1つ以上の文字を表すために単に置き換えることができます。\s
より具体的なトークンに変更することもできます\t
。
2番目の例では、Rakuの<(
...)>
キャプチャフラグはRakuに一致するオブジェクトを除くすべてのアイテムを削除するように指示するため、代替アイテムに一致<:Lu>+
(削除ではない)があります。
入力例:
abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
出力例:
>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
https://docs.raku.org/言語/regexes
https://conf.raku.org/talk/156
https://raku.org