我想删除字符串末尾的任何ABC。
我想出的最好的是
echo ${String}| sed -e 's/["ABC"]*$//g'
但是,它会删除字符串末尾的所有A,B或C.
如果String是DAAAAABCBBBCCABCABC,如果我使用上面的表达式,它将返回“D”,而不是“DAAAAABCBBBCC”
有没有更好的方法呢?谢谢。
答案 0 :(得分:19)
bash可以在内部执行此操作。以下删除末尾的任何“ABC”字符串,其结果可用于变量赋值,命令或其他:
${String%ABC}
答案 1 :(得分:13)
这应该有效:
echo "DAAAAABCBBBCCABCABC" | sed -e 's/\(ABC\)*$//g'
结果:
DAAAAABCBBBCC
括号和*
之间的环绕字符串以适当的顺序应用于其中的所有字母。
答案 2 :(得分:5)
您应该使用:
sed -E 's/(ABC)+$//'
OR:
sed -r 's/(ABC)+$//'
两者都会给出输出:
DAAAAABCBBBCC