bash - 提取两个字符之间的行的正则表达式
问题描述
我有几个序列要测试以查看它们是否存在于我的文件中,并且我想将它们提取到另一个文件中。序列以必须保留的唯一 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
我该怎么做呢?谢谢你的帮助
解决方案
感谢您,我了解我的错误!谢谢你。
sed -n "/^>$gene_id/,/^>/p" data.fsa >> test.fsa && sed -i '$d' test.fsa
我直接生成文件,然后sed -i '$d' test.fsa
手动删除最后一个选择。
推荐阅读
- python - 如何在 Python 中使用 Excel 定义的名称来获取值?
- python - 如何找到二值图像的最低点?
- javascript - jquery如何提交表单
- android - 我可以将 Button 放在 ScrollView 内的 ConstraintLayout 的底部吗?
- ubuntu-18.04 - Ubuntu添加用户未设置主目录
- swift - 在 Swift 中将字符串更新/附加到文件末尾的问题
- java - 读取大量数据
- python - 葡萄牙语的 Hunspell 将正确拼写的单词显示为拼写错误
- javascript - 在 Trimble 地图中获取经纬度停靠点
- asp.net-core - 修复了 JSON 引用循环错误而不是我得到太多数据