linux - 如何缩短 fasta 文件中的 header ?

标签 linux

我有一个如下所示的文件:

>Gene.10::S0008.1::g.10::m.10 Gene.10::S0008.1::g.10  ORF type:complete len:250 (-),score=22.42 S_0008.1:286-1035(-)
MKGDDFNIITAPVPINRIWWYSLTNRQRIALVFYMSFYVAGTLTNTASMFIDKFYIYIMR
LESLQMGSADPIDYKYLLEVQIVRGFWREDVHEVVDKVFRGKSIGYIKTNLMIPVEIWNN
CQVRSFRGIPCHSVAIICLIFGMLILYYHCTTVALFRTFMILNANLAAILLFIAMSMEYS
AAVEYDYCVNSVFMNRKTGGKAFVRGRYYNRTLEASGSTFKLMMVGDILFFCPMIGLGCY
LLFCNRENL* 
>Gene.11::S0009.1::g.10::m.11 Gene.11::S0009.1::g.10  ORF type:complete len:250 (-),score=22.42 S_0008.1:286-1035(-)
QSAISNDEELNKIMDA
....

我想删除标题中第一个空格之后的所有内容。我怎样才能在Linux中轻松地做到这一点?

结果文件:

>Gene.10::S0008.1::g.10::m.10 
MKGDDFNIITAPVPINRIWWYSLTNRQRIALVFYMSFYVAGTLTNTASMFIDKFYIYIMR
LESLQMGSADPIDYKYLLEVQIVRGFWREDVHEVVDKVFRGKSIGYIKTNLMIPVEIWNN
CQVRSFRGIPCHSVAIICLIFGMLILYYHCTTVALFRTFMILNANLAAILLFIAMSMEYS
AAVEYDYCVNSVFMNRKTGGKAFVRGRYYNRTLEASGSTFKLMMVGDILFFCPMIGLGCY
LLFCNRENL* 
>Gene.11::S0009.1::g.10::m.11 
QSAISNDEELNKIMDA

最佳答案

我会使用 sed:

sed '/^>/s/^>\([^ ]*\) .*/>\1 /'

如果一行以 > 开头,则删除第一个空格之后的所有内容。以下内容:

echo '>Gene.10::S0008.1::g.10::m.10 Gene.10::S0008.1::g.10  ORF type:complete len:250 (-),score=22.42 Sxl_rink_0008.1:286-1035(-)
MKGDDFNIITAPVPINRIWWYSLTNRQRIALVFYMSFYVAGTLTNTASMFIDKFYIYIMR
LESLQMGSADPIDYKYLLEVQIVRGFWREDVHEVVDKVFRGKSIGYIKTNLMIPVEIWNN
CQVRSFRGIPCHSVAIICLIFGMLILYYHCTTVALFRTFMILNANLAAILLFIAMSMEYS
AAVEYDYCVNSVFMNRKTGGKAFVRGRYYNRTLEASGSTFKLMMVGDILFFCPMIGLGCY
LLFCNRENL* 
>Gene.11::S0009.1::g.10::m.11 Gene.11::S0009.1::g.10  ORF type:complete len:250 (-),score=22.42 Sxl_rink_0008.1:286-1035(-)
QSAISNDEELNKIMDA' |  sed '/^>/s/^>\([^ ]*\) .*/>\1 /'

输出:

>Gene.10::S0008.1::g.10::m.10 
MKGDDFNIITAPVPINRIWWYSLTNRQRIALVFYMSFYVAGTLTNTASMFIDKFYIYIMR
LESLQMGSADPIDYKYLLEVQIVRGFWREDVHEVVDKVFRGKSIGYIKTNLMIPVEIWNN
CQVRSFRGIPCHSVAIICLIFGMLILYYHCTTVALFRTFMILNANLAAILLFIAMSMEYS
AAVEYDYCVNSVFMNRKTGGKAFVRGRYYNRTLEASGSTFKLMMVGDILFFCPMIGLGCY
LLFCNRENL* 
>Gene.11::S0009.1::g.10::m.11 
QSAISNDEELNKIMDA

我不知道标题后留下的一个空格是否相关,但我留下了它。

如果在那些长行字符中任何地方都没有空格,您可以删除所有内容,直到第一个空格被剪切:

cut -d' ' -f1

这将删除第一个空格之后的所有字符(包括空格,不知道空格是否相关)。

@edit:由于OP编辑了输入和输出,答案现在删除了第一个空格之前的所有内容,至于删除了第二个空格...

关于linux - 如何缩短 fasta 文件中的 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52384879/

相关文章:

c - Linux Socket 系统调用 "accept"永远不会返回?

linux - 通过终端创建文件并在脚本 python3 中加入两个文件

linux - 如何将音视频mjr文件合并成一个文件?

c++ - 在 C++ linux 中将字符串写入串口

linux - 可以在 Linux 上为同一个应用程序同时运行 IIS 和 Apache 服务器吗?

c - 在 GCC 4.6 中使用 -mno-cygwin 选项

linux - 拆卸和重新组装,如何在终端中正确地进行管道传输?

c++ - 如何以编程方式从工作线程获取父线程和兄弟线程的 CPU 利用率?

regex - 远程日志记录条目的 Grep 系统日志配置

linux - oracle从plsql获取变量返回到linux