2010-09-09 429 views

回答

48

你可以試試:

sed s'/.$//' 

使用的正則表達式是.$

  • .是一個正則表達式的元字符匹配 任何東西(除換行符)
  • $是行尾錨點。

通過使用$我們迫使.相匹配的最後一個字符

這將刪除最後一個字符,可以是任何東西:

$ echo ABCD | sed s'/.$//' 
ABC 
$ echo ABCD1 | sed s'/.$//' 
ABCD 

但是,如果你要刪除的最後一個字符,只有它的字母表,你可以這樣做:

$ echo ABCD | sed s'/[a-zA-Z]$//' 
ABC 
$ echo ABCD1 | sed s'/[a-zA-Z]$//' 
ABCD1 
+0

這有效......謝謝! – 2010-09-09 09:09:44

+1

您的解釋非常感謝...謝謝! – 2010-09-09 09:25:32

8

如果你是你沒有調用外部命令唱一個外殼,例如bash/ksh

s="ABCD" 
echo ${s/%?/} 
+1

一個相關的bash解決方案'echo $ {s:0:-1}',它指定了你想要的第一個字符的索引(開頭是'0')和你想要的最後一個字符的索引,使索引計數相對於結尾(倒數第二個字符爲'-1')。 – scottgwald 2016-09-03 00:58:23