我想删除字符串末尾的任何ABC.
我想出的最好的是
echo ${String}| sed -e 's/["ABC"]*$//g'
Run Code Online (Sandbox Code Playgroud)
但是,它将删除字符串末尾的所有A,B或C.
如果String是DAAAAABCBBBCCABCABC,如果我使用上面的表达式,它将返回"D",而不是"DAAAAABCBBBCC"
有没有更好的方法呢?谢谢.
mab*_*ham 22
bash可以在内部完成.以下删除末尾的任何"ABC"字符串,其结果可用于变量赋值,命令或其他:
${String%ABC}
Run Code Online (Sandbox Code Playgroud)
请参见http://tldp.org/LDP/abs/html/string-manipulation.html
Bir*_*rei 14
这应该工作:
echo "DAAAAABCBBBCCABCABC" | sed -e 's/\(ABC\)*$//g'
Run Code Online (Sandbox Code Playgroud)
结果:
DAAAAABCBBBCC
Run Code Online (Sandbox Code Playgroud)
括号内的环绕字符串,并*
按照确切的顺序应用于其中的所有字母.
你应该使用:
sed -E 's/(ABC)+$//'
Run Code Online (Sandbox Code Playgroud)
要么:
sed -r 's/(ABC)+$//'
Run Code Online (Sandbox Code Playgroud)
两者都会给出输出:
DAAAAABCBBBCC
Run Code Online (Sandbox Code Playgroud)