您好我试图转换文本文件:
>ENSG0123456 ENST0234567 ENSP0345678 scaffold999:1234-2345 1
ENOASDOIJSADJASPDOKPOKASD
ASDOJOIASJDOIJAKDJLKASDJL
ASLDKJLKASJDLKASJDLKJASLK
>ENSG0234567 ENST0345678 ENSP0456789 scaffold9999:2345-3456 -1
POIWQELKJLKJASMDNKLSJDLKA
ASPDOILKNSDMNASDLKJSADOIM
POAKSDAMNSADOIHOADPOKSDLK
对此:
>ENSP0345678
ENOASDOIJSADJASPDOKPOKASD
ASDOJOIASJDOIJAKDJLKASDJL
ASLDKJLKASJDLKASJDLKJASLK
>ENSP0456789
POIWQELKJLKJASMDNKLSJDLKA
ASPDOILKNSDMNASDLKJSADOIM
POAKSDAMNSADOIHOADPOKSDLK
我的awk / sed级别没有达到在合理的时间范围内为此问题找到解决方案的水平。有人有建议吗?
答案 0 :(得分:3)
awk -F'\t' 'NF > 1{$0=">"$3}1' file
<强>输出强>
>ENSP0345678
ENOASDOIJSADJASPDOKPOKASD
ASDOJOIASJDOIJAKDJLKASDJL
ASLDKJLKASJDLKASJDLKJASLK
>ENSP0456789
POIWQELKJLKJASMDNKLSJDLKA
ASPDOILKNSDMNASDLKJSADOIM
POAKSDAMNSADOIHOADPOKSDLK
答案 1 :(得分:1)
所有这些都可以满足您的需求:
awk -F"\t" '/>/{printf ">%s\n",$3; next}1;' file.fa
或
perl -F"\t" -lane '/>/ ? print ">$F[2]" : print' file.fa
或者,假设您只需要肽名称(ENSP.*
):
perl -pe 's/>.*(ENSP.+?)\s.*$/>\1/' file.fa