Je remplace, à partir d'un titre de flux, tous les caractères sauf les lettres et les chiffres par un tiret pour utiliser le résultat comme nom de fichier sûr pour tout système de fichiers:
$ 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
Cependant, je voudrais condenser tous les tirets répétitifs avec un seul comme Episodie-06-No-hope-of-riding-home-NEW-Advanced-grammar
J'ai trouvé que je peux y arriver en utilisant une substitution en deux passes:
$ 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
Je pensais pouvoir le faire en un seul passage comme:
$ echo ${t//[^A-Za-z0-9]+/-}
mais ça ne marche pas.
Un indice?
Remarque: je ne veux pas aller avec sed
ou d'autres outils
shopt
coquilles qui le supportent.