ฉันมีปัญหากับ sed ไม่ได้คืนสิ่งที่ฉันคาดหวังเมื่อใช้รูปแบบ regex เพื่อล้างผลลัพธ์บางอย่างจากแบบสอบถาม mysql
mysql -uroot -p -e 'SELECT `path` FROM db.media_gallery' | sed -n -r 's/[^\/]+([^\s]+).*/\1/p'
แบบสอบถามส่งคืนกลุ่มของแถวเช่น:
| /media/M/W/lmt_MWS04_8.png |
| /media/M/W/lmt_MWS02_11.png |
เมื่อฉันไพพ์ผ่านคำสั่ง sed ที่ระบุไว้ด้านบนมันจะส่งคืนสิ่งนี้:
//M/W/lmt_MWS04_8.png
//M/W/lmt_MWS02_11.png
"สื่อ" ไปไหน เหตุใดจึงลบส่วนของสตริงของฉันแบบสุ่ม
ไม่มีใครรู้วิธีแก้ไข regex ของฉันหรือไม่
[^\/]+
ส่วนของ regex ของคุณซึ่งไม่รวมอยู่ในผลลัพธ์ของคุณ เราไม่สามารถแก้ไข regex ของคุณได้หากเราไม่ทราบว่าคุณกำลังพยายามทำอะไร คุณกำลังพยายามที่จะตัดช่องว่าง?