2010-09-09 11 views

Antwort

48

Sie können versuchen:

sed s'/.$//' 

Die Regex verwendete .$

  • . ein regulärer Ausdruck meta char ist etwas entsprechen (außer Newline)
  • $ ist der Ende der Linie Anker.

Durch die $ Verwendung zwingen wir die . das letzte Zeichen übereinstimmen

Dies wird das letzte Zeichen entfernen, sei es alles:

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

Aber wenn Sie das letzte Zeichen löschen möchten , nur wenn es ein Alphabet ist, können Sie tun:

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

Das funktioniert ... danke! –

+1

Ihre Erklärung wird sehr geschätzt ... danke! –

8

Sie haben keine externen Befehle, wenn Sie Sie sind sing eine Muschel, zB bash/ksh

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

Eine verwandte Bash-Lösung 'echo $ {s: 0: -1}', die den Index des ersten gewünschten Zeichens ('0' für den Anfang) und den Index des letzten gewünschten Zeichens angibt, wobei ein Minuszeichen steht Damit wird der Index relativ zum Ende gezählt ("-1" für das vorletzte Zeichen). – scottgwald

Verwandte Themen