我试图用 sed 替换序列末尾的三字母代码(基本上删除),但对于多个正则表达式模式效果不佳。这是序列的示例
GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTAG
GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTAA
GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTGA
当我尝试将 regex
与 sed
单独使用时,它可以工作
echo "GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTAG" | sed 's/TAG$//'
echo "GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTAA" | sed 's/TAA$//'
echo "GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTAG" | sed 's/TAG$//'
但是,当我尝试包含多个正则表达式时,它不起作用
echo "GCAAAAAGTTGTATAGTCACACAACCTAGACTTATATCGTCTGCTATTCATTAG" |
sed 's/(TAG$|TAA$|TGA$)//'
有人可以指出我哪里做错了吗?
最佳答案
您需要在 sed 中使用扩展正则表达式开关:
sed -r 's/(TAG|TAA|TGA)$//'
或者在 OSX 上:
sed -E 's/(TAG|TAA|TGA)$//'
或者这个不带扩展正则表达式的 sed(不过在 OSX 上不起作用):
sed 's/\(TAG\|TAA\|TGA\)$//'
关于regex - sed 与正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551008/