Masalah utama Anda adalah Anda mencoba menggunakan /
sebagai pemisah, saat /
juga merupakan karakter yang akan Anda parsing.
Anda harus menggunakan pemisah yang berbeda, seperti pipa. Cocokkan semuanya dan /
, lalu gunakan \(
dan \)
(capture groups) batasi bagian yang ingin Anda ekstrak, dan gunakan \1
, merender grup itu:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Anda mungkin membuatnya berfungsi tanpa grup penangkap:hanya menjatuhkan semuanya hingga /
terakhir :
echo "yourstring" | sed 's|.*/||'
Mengapa tidak menggunakan basename
untuk ini? Misalnya:
for file in *mp3; do basename "$file"; done