基于部分ID提取文本

特鲁蒂

我有一个 fastq 文件。文件中的每个条目有四行,如下所示

@0e249669-03e7-47e0-9bc2-a9bcaa35e198 runid=435beb2485d20d8e06f3b38ed907a08f8147fa77 read=100 ch=83 start_time=2018-10-27T12:20:46Z
ACGTATGCCCCGTTCAGTTGCACGTATTGCTATTAGTCACCATTACTTCTTCCTATTTGATGTGAAACCAAGGCAGAGATACTTTTCTGGGTGGTATTTGGGAGGTGGTGAGGCGATTCAAATCCAGGTCTCTCTGGGGACCTTGTTCTTAACCCCTGTACCCCCAGCCATCTGATATAATACTTTT
+
%)"+"""&(,,(,42(--/#)&()1,//./2,7,++8735/-+*#%*3-06,*($(&""#&$)(%.,,2/,#("#$##$')#$-13/*)(-/+(.-*'.+*0)&)&&

行没有任何空行。

这只是一个条目,因此我在文本文件中有数千个条目。

我有另一个文件如下

@0e249669-03e7-47e0-9bc2-a9bcaa35e198
@e5cbeff3-5c28-46e4-a991-3dfded8505de

如何使用这些唯一 ID 的列表提取每条记录的所有四行?

输出应如下

@0e249669-03e7-47e0-9bc2-a9bcaa35e198 runid=435beb2485d20d8e06f3b38ed907a08f8147fa77 read=100 ch=83 start_time=2018-10-27T12:20:46Z
ACGTATGCCCCGTTCAGTTGCACGTATTGCTATTAGTCACCATTACTTCTTCCTATTTGATGTGAAACCAAGGCAGAGATACTTTTCTGGGTGGTATTTGGGAGGTGGTGAGGCGATTCAAATCCAGGTCTCTCTGGGGACCTTGTTCTTAACCCCTGTACCCCCAGCCATCTGATATAATACTTTT
+
%)"+"""&(,,(,42(--/#)&()1,//./2,7,++8735/-+*#%3-06,($(&""#&$)(%.,,2/,#("#$##$')#$-13/)(-/+(.-'.+*0)&)&&
窃贼

我认为以下命令行可以完成这项工作。数据在文件中fast-file,数据组名称在文件“列表”中。

while read line;do name=${line%% *}; grep -A3 "$name" fast-file ;done < list

或者如果你想删除</br>令牌,

while read line;do name=${line%% *}; grep -A3 "$name" fast-file ;done < list | sed 's%</br>%%'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章