在 UNIX 中重命名 fasta/fastq 文件中的条目

问题描述 投票:0回答:1

我有 x 个读段的 fasta 文件,我想重命名每个读段的 ID。 我的档案如下:

>e855552f-9484-4674-8fc4-d9b1f1add023 runid=4140cbe7f7cd36a17a00b732f27dd37bd09e4380 sampleid=mariposas read=55861 ch=2 start_time=2022-11-23T17:43:40Z model_version_id=2021-05-17_dna_r9.4.1_minion_768_2f1c8637 barcode=barcode06
GCTTTAACATTTAGCTATTTATGACACAGTGAAATAAAAGTAATATCTTTTTATTTTTAATTGTATTTATTAGTTACATGTTTTCACATGCATTTAACATAAATGTGATAATTTATGGGAATTACACTACTGTCAAAGTAGTT
>c9d90319-ec63-4347-9244-ad080b0815c5 runid=4140cbe7f7cd36a17a00b732f27dd37bd09e4380 sampleid=mariposas read=30196 ch=317 start_time=2022-11-23T14:47:32Z model_version_id=2021-05-17_dna_r9.4.1_minion_768_2f1c8637 barcode=barcode11
GCCTTGACTATATGGTTTACCTGTTCAAATACGACTCTACTCATGGTCGTTTCAAGGGAACAGTTGAGGTTCAAGGATGGTTTCCTCGTAGTAGTCTCAATGGAAACAAATCTCCTGTCTTCTGTGAAAGAGACCCTAAAATC

我想用第一个 ID 和由“_”链接的条形码(最后一个词)重命名读数。

我的期望是:

>e855552f-9484-4674-8fc4-d9b1f1add023_barcode06
GCTTTAACATTTAGCTATTTATGACACAGTGAAATAAAAGTAATATCTTTTTATTTTTAATTGTATTTATTAGTTACATGTTTTCACATGCATTTAACATAAATGTGATAATTTATGGGAATTACACTACTGTCAAAGTAGTT
>c9d90319-ec63-4347-9244-ad080b0815c5_barcode11
GCCTTGACTATATGGTTTACCTGTTCAAATACGACTCTACTCATGGTCGTTTCAAGGGAACAGTTGAGGTTCAAGGATGGTTTCCTCGTAGTAGTCTCAATGGAAACAAATCTCCTGTCTTCTGTGAAAGAGACCCTAAAATC

我正在尝试使用

sed
命令,但我不知道它是否是最佳选择。我不知道如何用 sed 而不是固定词来指定多个词(第一个和最后一个)。

sed sequence bioinformatics fasta
1个回答
0
投票

使用这个 Perl 单行代码:

perl -lpe 's{^(>\S+).*barcode=(\S+)}{$1_$2}' input.fa > output.fa

或就地更改文件:

perl -i.bak -lpe 's{^(>\S+).*barcode=(\S+)}{$1_$2}' input.fa

Perl 单行代码使用这些命令行标志:

-e
:告诉 Perl 查找内联代码,而不是在文件中。
-p
:一次循环输入一行,默认情况下将其分配给
$_
。在每次循环迭代后添加
print $_

-l
:在执行内联代码之前去除输入行分隔符(默认情况下在 *NIX 上为
"\n"
),并在打印时附加它。
-i.bak
:就地编辑输入文件(覆盖输入文件)。在覆盖之前,通过在其名称后附加扩展名
.bak
来保存原始文件的备份副本。如果你想跳过写备份文件,只需使用
-i
并跳过扩展名。

s{PATTERN}{REPLACEMENT}
:用
PATTERN
代替
REPLACEMENT

^
: 行首。
\S+
:非空白字符重复 1 次或多次。
(...)
:括号将其中匹配的模式捕获到匹配变量中:
$1
$2
等。
.*
:任何字符重复 0 次或多次。

另见:

perldoc perlrun
:如何执行Perl解释器:命令行开关
perldoc perlre
:Perl正则表达式(regexes)

perldoc perlre
:Perl正则表达式(regexes):量词;字符类和其他特殊转义;断言;捕获组

perldoc perlrequick
:Perl正则表达式快速入门

© www.soinside.com 2019 - 2024. All rights reserved.