sed:为匹配行保留某些内容
sed: keep certain contents for matched lines
我在一个 fasta 文件中有许多序列,如下所示(从 UniProtKB 下载):
>sp|P00045|CYC7_YEAST Cytochrome c iso-2 OS=Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GN=CYC7 PE=1 SV=1
MAKESTGFKPGSAKKGATLFKTRCQQCHTIEEGGPNKVGPNLHGIFGRHSGQVKGYSYTD
ANINKNVKWDEDSMSEYLTNPKKYIPGTKMAFAGLKKEKDRNDLITYMTKAAK
因为它们都是细胞色素 c 的氨基酸序列,所以我只关心生物体(即 Saccharomyces cerevisiae 用于上述条目)。所以我想修改这些序列的 headers 如下:
>Saccharomyces cerevisiae
MAKESTGFKPGSAKKGATLFKTRCQQCHTIEEGGPNKVGPNLHGIFGRHSGQVKGYSYTD
ANINKNVKWDEDSMSEYLTNPKKYIPGTKMAFAGLKKEKDRNDLITYMTKAAK
有机体名称总是在 "OS=" 之后,并在以下任一情况下停止:
- space(.*) #菌株信息
- space..=
满足了。
那么有人可以给我一些制作方法的线索吗?谢谢!
你可以使用这个:
sed 's/.*OS=\([^(]*\).*/>/' input
我在一个 fasta 文件中有许多序列,如下所示(从 UniProtKB 下载):
>sp|P00045|CYC7_YEAST Cytochrome c iso-2 OS=Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GN=CYC7 PE=1 SV=1
MAKESTGFKPGSAKKGATLFKTRCQQCHTIEEGGPNKVGPNLHGIFGRHSGQVKGYSYTD
ANINKNVKWDEDSMSEYLTNPKKYIPGTKMAFAGLKKEKDRNDLITYMTKAAK
因为它们都是细胞色素 c 的氨基酸序列,所以我只关心生物体(即 Saccharomyces cerevisiae 用于上述条目)。所以我想修改这些序列的 headers 如下:
>Saccharomyces cerevisiae
MAKESTGFKPGSAKKGATLFKTRCQQCHTIEEGGPNKVGPNLHGIFGRHSGQVKGYSYTD
ANINKNVKWDEDSMSEYLTNPKKYIPGTKMAFAGLKKEKDRNDLITYMTKAAK
有机体名称总是在 "OS=" 之后,并在以下任一情况下停止:
- space(.*) #菌株信息
- space..=
满足了。
那么有人可以给我一些制作方法的线索吗?谢谢!
你可以使用这个:
sed 's/.*OS=\([^(]*\).*/>/' input