ฉันต้องการจับตัวเลขสองตัวสุดท้าย (หนึ่ง int, หนึ่ง float; ตามด้วยช่องว่างที่เลือกได้) และพิมพ์เฉพาะตัวเลขนั้น
ตัวอย่าง:
foo bar <foo> bla 1 2 3.4
ควรพิมพ์:
2 3.4
จนถึงตอนนี้ฉันมีสิ่งต่อไปนี้:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
จะให้ฉัน
foo bar <foo> bla 1 replacement
อย่างไรก็ตามหากฉันพยายามแทนที่ด้วยกลุ่ม 1 จะมีการพิมพ์ทั้งบรรทัด
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
ฉันจะพิมพ์เฉพาะส่วนของบรรทัดที่ตรงกับนิพจน์ทั่วไปในกลุ่มได้อย่างไร
-r
หรือตัวเลือก "--regexp-Extended" มิฉะนั้นฉันได้รับinvalid reference \1 on
ข้อผิดพลาด RHS ของคำสั่ง s