首页 > 解决方案 > 提取两个字符之间的行的正则表达式

问题描述

我有几个序列要测试以查看它们是否存在于我的文件中,并且我想将它们提取到另一个文件中。序列以必须保留的唯一 ID 开头,并以我不想保留的“>”结尾。我做了一个测试,但我的正则表达式有问题

    #!/bin/bash


cat data.fsa | grep "Qrob" | wc -l

for gene_id in 'gene1' 'gene2' 
do
   if cat "data.fsa" |grep $gene_id >/dev/null 2>&1
then 
       echo "data.fsa" | sed -n "s/.*${gene_id}\(.*\)>.*/\"\1\"/p" 
else 
        continue
fi
done    

我该怎么做呢?谢谢你的帮助

标签: bashsed

解决方案


感谢您,我了解我的错误!谢谢你。

sed -n "/^>$gene_id/,/^>/p" data.fsa >> test.fsa && sed -i '$d' test.fsa

我直接生成文件,然后sed -i '$d' test.fsa手动删除最后一个选择。


推荐阅读