views:

65

answers:

2

That is, going from ABCD -> ABC

+8  A: 

You can try:

sed s'/.$//'

The regex used is .$

  • . is a regex meta char to match anything (except newline)
  • $ is the end of line anchor.

By using the $ we force the . to match the last char

This will remove the last char, be it anything:

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

But if you want to remove the last char, only if its an alphabet, you can do:

$ echo ABCD | sed s'/[a-zA-Z]$//'
ABC
$ echo ABCD1 | sed s'/[a-zA-Z]$//'
ABCD1
codaddict
That works...thanks!
Roger Moore
Your explanation is much appreciated...thank you!
Roger Moore
+2  A: 

you don't have call external commands if you are using a shell, eg bash/ksh

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