文字列の最後にあるABCを削除したいと思います。
私が思いついた最高のものは
echo ${String}| sed -e 's/["ABC"]*$//g'
ただし、文字列の末尾にあるすべてのA、またはBまたはCが削除されます。
StringがDAAAAABCBBBCCABCABCの場合、上記の式を使用すると、「DAAAAABCBBBCC」ではなく「D」が返されます。
これを行うより良い方法はありますか?ありがとう。
これはうまくいくはずです:
echo "DAAAAABCBBBCCABCABC" | sed -e 's/\(ABC\)*$//g'
結果:
DAAAAABCBBBCC
括弧と*
の間の囲み文字列は、その中のすべての文字に正確な順序で適用されます。
bashはこれを内部で実行できます。次のコードは、末尾の「ABC」文字列をすべて削除し、その結果を変数の割り当て、コマンドなどで使用できます。
${String%ABC}
http://tldp.org/LDP/abs/html/string-manipulation.html を参照してください
あなたは使うべきです:
sed -E 's/(ABC)+$//'
または:
sed -r 's/(ABC)+$//'
どちらも出力を提供します:
DAAAAABCBBBCC