我想刪除字符串末尾的任何ABC。使用sed或其他bash工具刪除字符串末尾的圖案
我已經想出了最好的是
echo ${String}| sed -e 's/["ABC"]*$//g'
但是,它會刪除所有的A或B或C在字符串的結尾。
如果字符串是DAAAAABCBBBCCABCABC,如果我使用上面的表達式,它會返回,而不是「DAAAAABCBBBCC」
是否有這樣做的更好辦法「d」?謝謝。
我想刪除字符串末尾的任何ABC。使用sed或其他bash工具刪除字符串末尾的圖案
我已經想出了最好的是
echo ${String}| sed -e 's/["ABC"]*$//g'
但是,它會刪除所有的A或B或C在字符串的結尾。
如果字符串是DAAAAABCBBBCCABCABC,如果我使用上面的表達式,它會返回,而不是「DAAAAABCBBBCC」
是否有這樣做的更好辦法「d」?謝謝。
這應該工作:
echo "DAAAAABCBBBCCABCABC" | sed -e 's/\(ABC\)*$//g'
結果:括號和*
之間
DAAAAABCBBBCC
環繞串適用於該確切爲了在他們裏面的所有字母。
你應該使用:
sed -E 's/(ABC)+$//'
OR:
sed -r 's/(ABC)+$//'
兩個將給輸出:
DAAAAABCBBBCC
Bash可以在內部做到這一點。以下在末端刪除任何「ABC」的字符串,並將其結果可以在變量賦值,命令或任何用於:
${String%ABC}
值得一提的是這兩個參數使解釋的expresion作爲擴展正則表達式。我看到Mac(Darwin)使用的'-E'和其他linux發行版使用'-r'。 – LopSae 2012-12-10 21:37:40
'-E'是與BSD sed兼容的無證選項。你幾乎可以肯定使用'-r'。 '-E'在sed的busybox版本上會失敗。 – Six 2015-04-10 02:29:06