我该如何编辑代码,以便解决与sed命令相反的输出问题

时间:2019-07-18 22:53:59

标签: database bash sed

我正在编写代码,以将名称匹配的物种从远程NCBI BLAST数据库中放入,匹配名称的文件来自该文件。我想使代码更健壮,以便它可以处理没有匹配项并且与我当前的sed命令背道而驰的文件

#!/bin/bash
for i in ./split.contigs.Parsed/*.csv ; do   
  sciname=$(head -1 $i | sed -E "s/([A-Z][a-z]+ [a-z]+) .+/\1/")  
  contigname=$(echo $i | sed -E "s/.fa.csv//" | sed -E
  "s/\.\/split.contigs.Parsed\///")  
 echo "$sciname,$contigname"
done

预期

Drosophila melanogaster,contig_66:1.0-213512.0_pilon
Drosophila melanogaster,contig_67:1.0-138917.0_pilon
Drosophila sechellia,contig_67:139347.0-186625.0_pilon
Drosophila melanogaster,contig_68:3768.0-4712.0_pilon

实际

Drosophila ananassae,contig_393:1.0-13214.0_pilon
,contig_393:13217.0-13563.0_pilon
Drosophila sp. pallidosa-like-Wau w,contig_393:14835.0-18553.0_pilon
Apteryx australis,contig_393:19541.0-21771.0_pilon
,contig_393:21780.0-22772.0_pilon
Drosophila sp. pallidosa-like-Wau w,contig_393:22776.0-31442.0_pilon
Drosophila melanogaster,contig_394:1.0-89663.0_pilon

1 个答案:

答案 0 :(得分:0)

如果$sciname为null,则跳过该循环。在定义$sciname之后放入这一行:

[[ -z $sciname ]] && continue