คำตอบที่โพสต์ส่วนใหญ่จะไม่สมบูรณ์ใน URL ที่มีสตริงหรือเป้าหมายของแบบสอบถามเช่นตัวอย่างต่อไปนี้:
https://example.com/this/is/a/path?query#target
Python มีการแยกวิเคราะห์ URL ในไลบรารีมาตรฐาน มันง่ายกว่าที่จะปล่อยให้มันทำ เช่น,
from urllib import parse
import sys
path = parse.urlparse(sys.stdin.read().strip()).path
print("/" if not path or path == "/" else path.rsplit("/", 1)[-1])
คุณสามารถย่อให้เป็นหนึ่งเดียวpython3 -c
เพื่อใช้ในเชลล์สคริปต์:
echo 'https://example.com/this/is/a/path/componets?query#target' \
| python3 -c 'from urllib import parse; import sys; path = parse.urlparse(sys.stdin.read().strip()).path; print("/" if not path or path == "/" else path.rsplit("/", 1)[-1])'
(นอกจากนี้คุณยังสามารถแยกสคริปต์ออกเพื่อความสะดวกในการอ่านซึ่ง'
จะทำให้คุณใส่บรรทัดใหม่ได้)
แน่นอนตอนนี้เชลล์สคริปต์ของคุณมีการพึ่งพา Python
(ฉันไม่แน่ใจเล็กน้อยเกี่ยวกับกรณีที่พยายามจัดการกับกรณีที่องค์ประกอบเส้นทางของ URL คือรูท ( /
); ปรับ / ทดสอบว่าเกี่ยวข้องกับคุณหรือไม่)