grep文件中的多个模式

时间:2017-10-04 10:14:21

标签: awk grep

我在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>

提前致谢。

1 个答案:

答案 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>您需要的关键字