2010-09-09 14 views

Respuesta

48

que puede probar:

sed s'/.$//' 

La expresión regular utilizada es .$

  • . es un char meta de expresiones regulares para que coincida con nada (excepto una línea nueva)
  • $ es el ancla de final de línea.

Al utilizar el $ que fuerce la . para que coincida con el último Char

Esto eliminará el último char, ya sea cualquier cosa:

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

Pero si desea eliminar el último carácter , solo si es un alfabeto, puede hacer:

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

Eso funciona ... ¡gracias! –

+1

Su explicación es muy apreciada ... ¡gracias! –

8

no tiene comandos de llamada externa si es usted cantar un caparazón, por ejemplo, bash/ksh

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

Una solución de bash relacionada 'echo $ {s: 0: -1}', que especifica el índice del primer carácter que desea ('0' para el comienzo) y el índice del último carácter que desea, donde un signo menos hace que el recuento de índice sea relativo al final ('-1' para el penúltimo carácter). – scottgwald

Cuestiones relacionadas