มีบรรทัดคำสั่งง่าย ๆ ในการแยกส่วนสุดท้ายของสตริงที่คั่นด้วยเครื่องหมายขีดคั่นหรือไม่ เช่นผมต้องการที่จะแยกจาก123
foo-bar-123
มีบรรทัดคำสั่งง่าย ๆ ในการแยกส่วนสุดท้ายของสตริงที่คั่นด้วยเครื่องหมายขีดคั่นหรือไม่ เช่นผมต้องการที่จะแยกจาก123
foo-bar-123
คำตอบ:
คุณสามารถใช้การขยายพารามิเตอร์ของ Bash :
string="foo-bar-123" && printf "%s\n" "${string##*-}"
123
หากคุณต้องการใช้กระบวนการอื่นด้วย Awk:
echo "foo-bar-123" | awk -F- '{print $NF}'
หรือถ้าคุณชอบ Sed:
echo "foo-bar-123" | sed 's/.*-//'
กระบวนการภายนอกที่เบากว่าอย่างที่Glenn Jackman แนะนำคือcut
:
cut -d- -f3 <<< "$string"
cut
; แน่นอน แต่ถ้าจำนวนของเขตข้อมูลสุดท้ายเป็นที่รู้จักกัน (เป็นคำถามที่ค่อนข้างคลุมเครือ: มีบรรทัดคำสั่งง่าย ๆ ในการแยกส่วนสุดท้าย ... ? )
rev <<< "$string" | cut -d- -f1 | rev
แต่แล้วเรากำลังหันเหออกไปจากความเรียบง่ายของ param.expansion
grep -Po '(?<=\w-)\w+(?=$|[\s.,])'
echo "foo-bar-123"| awk -F"-" '{print $3}'
cut
:cut -d- -f3 <<< "$string"