2010-09-09 8 views

Répondre

48

Vous pouvez essayer:

sed s'/.$//' 

Le regex utilisé est .$

  • . est une expression régulière méta char correspondre quoi que ce soit (sauf nouvelle ligne
  • $ est l'ancre de fin de ligne.

En utilisant le $ on force le . pour correspondre le dernier caractère

Cela supprimera le dernier char, que ce soit quelque chose:

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

Mais si vous voulez supprimer le dernier caractère , seulement si c'est un alphabet, vous pouvez faire:

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

Cela fonctionne ... merci! –

+1

Votre explication est très appréciée ... merci! –

8

vous n'avez pas de commandes externes si vous êtes chanter une coquille, par exemple bash/ksh

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

Une solution de bash associée 'echo $ {s: 0: -1}', qui spécifie l'index du premier caractère que vous voulez ('0' pour le début) et l'index du dernier caractère que vous voulez, où un signe moins fait que l'indice compte par rapport à la fin («-1» pour l'avant-dernier caractère). – scottgwald

Questions connexes