2010-09-09 40 views

Trả lời

48

Bạn có thể thử:

sed s'/.$//' 

Các regex sử dụng là .$

  • . là một char meta regex để phù hợp với bất cứ điều gì (trừ newline)
  • $ là kết thúc của dòng neo.

Bằng việc sử dụng $ chúng tôi buộc các . để phù hợp với char cuối cùng

này sẽ loại bỏ các char cuối cùng, có thể là bất cứ điều gì:

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

Nhưng nếu bạn muốn loại bỏ các char cuối cùng , chỉ khi bảng chữ cái của nó, bạn có thể làm:

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

Điều đó hoạt động ... cảm ơn! –

+1

Giải thích của bạn được đánh giá cao ... cảm ơn bạn! –

8

bạn không có lệnh gọi bên ngoài nếu bạn là u hát vỏ, ví dụ: bash/ksh

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

Giải pháp bash liên quan 'echo $ {s: 0: -1}', chỉ định chỉ số của ký tự đầu tiên bạn muốn ('0' cho phần đầu) và chỉ mục của ký tự cuối cùng bạn muốn, trong đó dấu trừ làm cho chỉ số đếm tương đối so với kết thúc ('-1' cho ký tự thứ hai đến cuối). – scottgwald

Các vấn đề liên quan