如何使用sed剃掉最后一个角色?

时间:2010-09-09 09:03:24

标签: regex shell string sed

即从ABCD - >开始ABC

2 个答案:

答案 0 :(得分:59)

您可以尝试:

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

答案 1 :(得分:10)

如果您使用的是shell,则没有调用外部命令,例如bash / ksh

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