Bash

重命名生物資訊學中multifasta文件的標題

  • October 20, 2022

這是我的 file1.fa(seqID, \t, sequence),它不是標準的 fasta 格式文件。

abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

現在我想將其轉換為標準的 fasta 格式,如下所示:

>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef 
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig 
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

我試過這樣,但我不知道如何添加“>”,有人可以幫助我嗎?

less -S file1.fa | sed 's/\t/\n/g' > file2.fa

您可以簡單地使用sed 而不使用less. 您還可以就地編輯文件,而無需將輸出重定向到新文件。

您的sed命令將變為:

sed -i'.bak' 's/\(.*\)\t/>\1\n/g' file1.fa

或者,如果您不想*就地編輯,*您可以使用:

sed  's/\(.*\)\t/>\1\n/g' file1.fa > file2.fa

使用Raku(以前稱為 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/language/regexes#Unicode_properties

如果您願意,您可以簡單地替換\S+以表示一個或多個非空白字元。您還可以更改\s為更具體的\t令牌。

在第二個範例中,Raku 的<(……)>擷取標記指示 Raku 將所有內容從匹配對像中刪除,因此<:Lu>+在替換中匹配但未刪除。

樣本輸入:

abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

樣本輸出:

>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

https://docs.raku.org/language/regexes

https://conf.raku.org/talk/156

https://raku.org

引用自:https://unix.stackexchange.com/questions/721686