Dapatkan bagian terakhir dari string setelah tanda hubung


10

Apakah ada baris perintah sederhana untuk mengekstraksi bagian terakhir dari string yang dipisahkan oleh tanda hubung? Misalnya, saya ingin mengekstrak 123dari foo-bar-123.

Jawaban:


23

Anda dapat menggunakan ekspansi parameter Bash :

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

Jika Anda ingin menggunakan proses lain, dengan Awk:

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

Atau, jika Anda lebih suka Sed:

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

Proses eksternal yang lebih ringan, seperti yang disarankan Glenn Jackman adalah cut:

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

ekspansi parameter shell adalah jawaban terbaik. Alat eksternal yang ringan adalah cut:cut -d- -f3 <<< "$string"
glenn jackman

1
@glennjackman - re: cut; memang tetapi hanya jika jumlah bidang terakhir diketahui (karena pertanyaannya agak ambigu: Apakah ada baris perintah sederhana untuk mengekstrak bagian terakhir ...? )
don_crissti

2
@don_crissti, memang. Seseorang bisa melakukannya rev <<< "$string" | cut -d- -f1 | rev, tetapi kemudian kita membelok dari kesederhanaan param.pembangunan.
glenn jackman


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.