我在NCBI上运行了BLAST搜索,并将结果作为xml文件下载。从这个文件中,我需要物种名称及其相应的序列。
物种名称具有<Hit_def>
作为模式,而匹配序列具有<Hsp_qseq>
作为模式,但这两者都由某些行分隔。有没有办法grep
(或awk
)<Hit_def>
后跟<Hsp_qseq>
,以便它加入两行并为我提供每个物种的信息?
正如所建议的,我包含了一个实际输入文件的示例 -
<Hit_def>
蛋白质名称[Homo sapiens] </Hit_def>
<Hit_accession>
BAG72649 </Hit_accession>
<Hit_len>
2004 </Hit_len>
<Hit_hsps>
<Hsp>
<Hsp_num>
1 </Hsp_num>
<Hsp_qseq>
蛋白质序列</Hsp_qseq>
我期望的输出是 -
<Hit_def>
蛋白质名称[Homo sapiens] <\Hit_def>
<Hsp_qseq>
protein_sequence <\Hsp_qseq>
<Hit_def>
蛋白质名称[Mus musculus] <\Hit_def>
<Hsp_qseq>
protein_sequence <\Hsp_qseq>
提前致谢。
答案 0 :(得分:0)
$ grep '\(<Hit_def>\|<Hsp_qseq>\)' file
<Hit_def> protein name [Homo sapiens] </Hit_def>
<Hsp_qseq> protein sequence </Hsp_qseq>
说明:
grep
使用grep
'
模式周围的单引号(除非你需要shell扩展)\(
BRE(基本正则表达式,而不是grep -E
中的ERE 扩展正则表达式)需要转义分组字符()
以及OR运算符|
<Hit_def>
,<Hsp_qseq>
您需要的关键字