Saya mengganti, dari judul umpan, semua karakter kecuali huruf dan digit dengan tanda hubung untuk menggunakan hasilnya sebagai nama file aman untuk sistem file apa pun:
$ t="Episodie 06: No hope of riding home (NEW) - Advanced grammar"
$ echo ${t//[^A-Za-z0-9]/-}
Episodie-06--No-hope-of-riding-home--NEW----Advanced-grammar
Namun saya ingin menyingkat semua strip berulang dengan satu seperti Episodie-06-No-hope-of-riding-home-NEW-Advanced-grammar
Saya menemukan saya dapat mencapainya dengan menggunakan dua pass substitusi:
$ t="Episodie 06: No hope of riding home (NEW) - Advanced grammar"
$ tmp=${t//[^A-Za-z0-9]/-}
$ echo ${tmp//--/-}
Episodie-06-No-hope-of-riding-home-NEW--Advanced-grammar
Saya pikir saya bisa melakukannya dalam sekali jalan seperti:
$ echo ${t//[^A-Za-z0-9]+/-}
tetapi tidak berhasil.
Ada petunjuk?
Catatan: Saya tidak ingin menggunakan sed
alat lain
shopt
dan cangkang mana yang mendukungnya.