如何使用sed删除最后一个字符?

27

即,从ABCD转化为ABC

2个回答

74

你可以尝试:

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

12

如果你正在使用shell,例如bash/ksh,就不需要调用外部命令。

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

1
一个相关的bash解决方案是 echo ${s:0:-1},它指定了你想要的第一个字符的索引(从开头开始为0)和最后一个字符的索引,减号使索引相对于结尾计数(倒数第二个字符为-1)。 - scottgwald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接