web-dev-qa-db-fra.com

Comment raser le dernier personnage en utilisant sed?

Autrement dit, en allant de ABCD -> ABC

25
Roger Moore

Tu peux essayer:

sed s'/.$//'

L'expression régulière utilisée est .$

  • . est un méta-caractère regex qui correspond à tout (sauf la nouvelle ligne)
  • $ est l'ancre de fin de ligne.

En utilisant le $ nous forçons le . pour correspondre au dernier caractère

Cela supprimera le dernier caractère, que ce soit:

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

Mais si vous souhaitez supprimer le dernier caractère, uniquement s'il s'agit d'un alphabet, vous pouvez faire:

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

vous n'avez pas d'appel de commandes externes si vous utilisez un shell, par exemple bash/ksh

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