Nhận phần cuối của chuỗi sau dấu gạch nối


10

Có một dòng lệnh đơn giản để trích xuất phần cuối của chuỗi được phân tách bằng dấu gạch nối không? Ví dụ, tôi muốn trích xuất 123từ foo-bar-123.

Câu trả lời:


23

Bạn có thể sử dụng mở rộng tham số của Bash :

string="foo-bar-123" && printf "%s\n" "${string##*-}"
123

Nếu bạn muốn sử dụng quy trình khác, với Awk:

echo "foo-bar-123" | awk -F- '{print $NF}'

Hoặc, nếu bạn thích Sed:

echo "foo-bar-123" | sed 's/.*-//'

Một quy trình bên ngoài nhẹ hơn, như Glenn Jackman gợi ýcut:

cut -d- -f3 <<< "$string"

mở rộng tham số shell là câu trả lời tốt nhất. Một công cụ nhẹ bên ngoài là cut:cut -d- -f3 <<< "$string"
glenn jackman

1
@glennjackman - lại : cut; thực sự nhưng chỉ khi số trường cuối cùng được biết (vì câu hỏi hơi mơ hồ: Có một dòng lệnh đơn giản để trích xuất phần cuối ...? )
don_crissti

2
@don_crissti, thực sự. Người ta có thể làm rev <<< "$string" | cut -d- -f1 | rev, nhưng sau đó chúng ta đang tránh xa sự đơn giản của param.Exansion.
glenn jackman


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.