Saya punya tautan http:
http://www.test.com/abc/def/efg/file.jar
dan saya ingin menyimpan file.jar bagian terakhir ke variabel, jadi string output adalah "file.jar".
Ketentuan : tautan dapat memiliki panjang yang berbeda, misalnya:
http://www.test.com/abc/def/file.jar.
Saya mencobanya seperti itu:
awk -F'/' '{print $7}'
, tapi masalahnya adalah panjang URL, jadi saya butuh perintah yang bisa digunakan untuk panjang URL apa pun.
bash
shell-script
awk
cut
FunTomas
sumber
sumber
file=${myurl##*/}
, kemudian gunakan pencocokan terbalik serakah untuk mencadangkan?
(jangan lupa untuk menghindarinya!), Misalnyaecho ${file%%\?*}
basename
dandirname
berfungsi baik untuk URL juga:sumber
basename
dandirname
pisahkan string pada /, dan itu juga berfungsi dengan URL, setidaknya selama mereka tidak memiliki porsi lokal (tidak dengan URI pada umumnya)./relative/URI/with/absolute/path/to/resource.txt
,relative/path/to/resource.txt
,../../../resource.txt
danresource.txt
en.wikipedia.org/wiki/.../relative/path
bisa berupa jalur sistem file atau URI relatif. Tetapi yang mana dari itu tergantung pada konteksnya. Ketika digunakan sebagai jalur sistem file, itu bukan URI. Ketika digunakan sebagai URI, itu bukan jalur sistem file. Mengatakan itu adalah URI hanya karena kebetulan cocok dengan sintaksinya seperti mengatakan setiap kata dalam komentar ini adalah URI juga.Dengan
awk
, Anda dapat menggunakan$NF
, untuk mendapatkan bidang terakhir, berapapun jumlah bidangnya:Jika Anda menyimpan string itu dalam variabel shell, Anda dapat menggunakan:
sumber
Sebagian besar jawaban yang diposting tidak kuat pada URL yang berisi string atau target kueri, seperti, misalnya, yang berikut:
https://example.com/this/is/a/path?query#target
Python memiliki parsing URL di pustaka standarnya; lebih mudah membiarkannya melakukannya. Misalnya,
Anda bisa memadatkannya menjadi satu
python3 -c
untuk digunakan dalam skrip shell:(Anda juga dapat menjaga agar skrip tetap tidak dapat dibaca.
'
Anda dapat memasukkan baris baru.)Tentu saja, sekarang skrip shell Anda memiliki ketergantungan pada Python.
(Saya sedikit tidak yakin tentang jika yang mencoba menangani kasus-kasus di mana komponen jalur URL adalah root (
/
); sesuaikan / uji jika itu penting bagi Anda.)sumber
Salah satu metode adalah dengan
rev
URL lalu potong bidang dan sekalirev
lagi. misalnya:Keluaran:
Contoh 2:
Keluaran:
sumber