Pages : 1
#1 Le 31/01/2017, à 20:15
- Himeroos
[RESOLU]Commande SED
Bonjour,
J'ai actuellement un soucis avec sed (je ne sais pas très bien utiliser toute sa puissance ), je vous explique, j'ai un script qui dans sa globalité va déplacer des fichier d'un point A vers un point B puis vas les décompresser automatiquement, tout fonctionne niquel. Sauf que certain fichier avait un nom pas terrible sur mon pc Windows alors que sur tout mes pc Linux c'est OK. Puis je me suis aperçue que certain caractère emmerder Windows d'où les noms pas beau.
J'aimerais donc avant tout déplacement changer le nom qu'il va prendre j'ai déjà récupérer le nom dans une variable puis j'ai utilisé cette commande qui va supprimer tout les méchants caractère :
i="$(basename "${i%.*}.${i##*.}" | sed "s/[^a-z|0-9 _.]//g")"
Cela fonctionne niquel ça supprime bien les caractère sauf ceux entre crochet, mais je n'aime pas ça je voudrais que au lieu de supprimer ça remplace les caractère (sauf cela [^a-z|0-9 _.]) par un underscore "_"
Avez vous une idée svp?
Dernière modification par Himeroos (Le 31/01/2017, à 21:24)
Ubuntu server 16.04 x64
Hors ligne
#2 Le 31/01/2017, à 20:38
- Hizoka
Re : [RESOLU]Commande SED
Salut, c'est la base de sed du coup
i="$(basename "${i%.*}.${i##*.}" | sed "s/[^a-z|0-9 _.]/_/g")"
echo "gfdgfd dvcxb -gfdù&é'dssdq" | sed "s/[^a-z|0-9 _.]/_/g"
gfdgfd dvcxb _gfdù_é_dssdq
Dernière modification par Hizoka (Le 31/01/2017, à 20:39)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 31/01/2017, à 20:44
- Himeroos
Re : [RESOLU]Commande SED
Bonjour et merci de ta réponse, je me sens idiot j'ai essayé :
i="$(basename "${i%.*}.${i##*.}" | sed "s/[^a-z|0-9 _.]//_/")"
j'avais mis un "/" en trop et je pensais le g inutile du coup ^^
Merci encore à toi. bonne soirée
Ubuntu server 16.04 x64
Hors ligne
#4 Le 31/01/2017, à 21:45
- pingouinux
Re : [RESOLU]Commande SED
Bonsoir,
Pour info, tu peux remplacer
"$(basename "${i%.*}.${i##*.}")"
par
"$(basename "$i")"
ou
"${i##*/}"
Hors ligne
#5 Le 31/01/2017, à 22:01
- Himeroos
Re : [RESOLU]Commande SED
Bonsoir,
Cette info est la bienvenue ça épure le code. J'allais bientôt y venir.
Ubuntu server 16.04 x64
Hors ligne
Pages : 1