【发布时间】:2014-09-08 21:16:23
【问题描述】:
我在 Mac 上使用 bash 来运行一些 grep,并且我正在使用与 macports 一起安装的 GNU grep。无论如何,我正在尝试使用 grep 查询一个 fasta 文件(DNA 序列 - 一行上的序列 ID,下一行上的 DNA 序列),以根据要查询的字符串的文件列表输出文件的子集。目前我有一个列表,它是用换行符和 fasta 文件分隔的单个单词,并且正在使用命令
grep -A1 -f query_list.txt initial_file.fasta > query_subset.fasta
这几乎产生了我想要的输出,但在输出文件中,在每个与查询文件中的字符串匹配的序列集之后,换行符上有一个双破折号。不知道为什么会这样。我试过用 sed 删除它们
sed 's/\n--\n/\n' query_subset.fasta > final.fasta
但这不起作用。如果我在 textwrangler 中使用相同的查找和替换,它工作正常。
无论如何,作为一个例子,文件看起来像
query_list.txt
SpeciesA
SpeciesC
initial_file.fasta
>SpeciesA
ACGTGATCGATCGAT
>SpeciesB
ACGGGTCTTAGTATCG
>SpeciesC
ACGTACGATCTTCAGT
>SpeciesD
ACGTTCAGTCAGTTCAG
query_subset.fasta
>SpeciesA
ACGTGATCGATCGAT
--
>SpeciesC
ACGTACGATCTTCAGT
--
我需要通过命令行完成此操作,因为我正在尝试将其实现到脚本中以自动化一些示例处理。
非常感谢任何输入! 干杯, 特里斯
【问题讨论】:
-
--组分隔符 总是在使用-A, -B, or -C上下文说明符时插入行组之间。请参阅下面的sed解决方案之一以删除。
标签: grep